<template>
  <div class="page_root" data-page-name="人效分析" data-page-identification="z_6y759lwquk">
    <a-spin :spinning="pageLoading.loading" :tip="pageLoading.tip">
      <!-- begin vid_qvxk999uqh 工时导出 -->
      <a-modal
        class="vid_qvxk999uqh"
        v-model:visible="vid_qvxk999uqh_props.visible"
        :centered="true"
        :title="'工时导出'"
        :maskClosable="false"
        @cancel="handle_vid_qvxk999uqh_cancel"
        @ok="handle_vid_qvxk999uqh_ok"
      >
        <!-- begin vid_9ts69zdrpu 表单容器_1xqo2hml83 -->
        <a-form ref="vid_9ts69zdrpu_ref" class="vid_9ts69zdrpu" :model="a_y5d2eig5t4" :formModel="vid_9ts69zdrpu_props.formModel">
          <!-- begin vid_w2vegr291w 表单项容器_haed81mezf -->
          <a-form-item name="e_ohp5mnovfk" :rules="a_y5d2eig5t4_rules[`e_ohp5mnovfk`]" class="vid_w2vegr291w" :label-col='{"span":4}' :wrapper-col='{"span":20}'>
            <!-- begin vid_ysl4fo0g9p 日期_fzpaeowct6 -->
            <a-date-picker
              class="vid_ysl4fo0g9p"
              :getPopupContainer="(node) => node.parentNode"
              v-model:value="a_y5d2eig5t4.e_ohp5mnovfk"
              :format="'YYYY-MM'"
              :valueFormat="'YYYY-MM'"
              :placeholder="'请选择日期'"
              :picker="'month'"
              :showTime="vid_ysl4fo0g9p_props.showTime"
            >
            </a-date-picker>
            <!-- end vid_ysl4fo0g9p 日期_fzpaeowct6 -->
            <template #label>
              <!-- begin vid_mtwwf64b3h 选择日期 -->
              <span class="vid_mtwwf64b3h"> 选择日期 </span>
              <!-- end vid_mtwwf64b3h 选择日期 -->
            </template>
          </a-form-item>
          <!-- end vid_w2vegr291w 表单项容器_haed81mezf -->
          <!-- begin vid_dtr68vwc7d 表单项容器_zg70vq4fef -->
          <a-form-item name="u_pkg3q6xtgy" :rules="a_y5d2eig5t4_rules[`u_pkg3q6xtgy`]" class="vid_dtr68vwc7d" :label-col='{"span":4}' :wrapper-col='{"span":20}'>
            <!-- begin vid_5nqxinjcl4 下拉树_rhnlg9sj1m -->
            <a-tree-select
              class="vid_5nqxinjcl4"
              :treeNodeFilterProp="'name'"
              :getPopupContainer="(node) => node.parentNode"
              v-model:value="a_y5d2eig5t4.u_pkg3q6xtgy"
              :fieldNames="{'children':'children','label':'name','value':'id','key':'id'}"
              :multiple="true"
              :treeCheckable="true"
              :placeholder="'请选择部门'"
              :selected="vid_5nqxinjcl4_props.selected"
              :treeData="vid_5nqxinjcl4_options()"
              @dropdownVisibleChange="handle_vid_5nqxinjcl4_dropdownVisibleChange"
              @change="handle_vid_5nqxinjcl4_change"
            >
            </a-tree-select>
            <!-- end vid_5nqxinjcl4 下拉树_rhnlg9sj1m -->
            <template #label>
              <!-- begin vid_0r43qabf8a 选择部门 -->
              <span class="vid_0r43qabf8a"> 选择部门 </span>
              <!-- end vid_0r43qabf8a 选择部门 -->
            </template>
          </a-form-item>
          <!-- end vid_dtr68vwc7d 表单项容器_zg70vq4fef -->
          <!-- begin vid_2jq2ebfbz8 表单项容器_df37uzs9uu -->
          <a-form-item name="q_17j7f9yd7e" :rules="a_y5d2eig5t4_rules[`q_17j7f9yd7e`]" class="vid_2jq2ebfbz8" :label-col='{"span":4}' :wrapper-col='{"span":20}'>
            <!-- begin vid_9j88td624v 数字输入框_uavvf8aulg -->
            <a-input-number class="vid_9j88td624v" v-model:value="a_y5d2eig5t4.q_17j7f9yd7e" :placeholder="'请输入工时天数'"> </a-input-number>
            <!-- end vid_9j88td624v 数字输入框_uavvf8aulg -->
            <template #label>
              <!-- begin vid_cdg7rp5hvl 工时天数 -->
              <span class="vid_cdg7rp5hvl"> 工时天数 </span>
              <!-- end vid_cdg7rp5hvl 工时天数 -->
            </template>
          </a-form-item>
          <!-- end vid_2jq2ebfbz8 表单项容器_df37uzs9uu -->
          <!-- begin vid_j2wozrjgzj 表单项容器_caee0gojwo -->
          <a-form-item name="z_wzdeaf5k4y" :rules="a_y5d2eig5t4_rules[`z_wzdeaf5k4y`]" class="vid_j2wozrjgzj" :label-col='{"span":4}' :wrapper-col='{"span":20}'>
            <!-- begin vid_ly1dsvmc8d 单选按钮组_jcdp4etg9f -->
            <a-radio-group
              class="vid_ly1dsvmc8d"
              v-model:value="a_y5d2eig5t4.z_wzdeaf5k4y"
              :selected="vid_ly1dsvmc8d_props.selected"
              :options="vid_ly1dsvmc8d_options()"
              @change="handle_vid_ly1dsvmc8d_change"
            >
            </a-radio-group>
            <!-- end vid_ly1dsvmc8d 单选按钮组_jcdp4etg9f -->
            <template #label>
              <!-- begin vid_2xxkr8tu9s 发送邮件 -->
              <span class="vid_2xxkr8tu9s"> 发送邮件 </span>
              <!-- end vid_2xxkr8tu9s 发送邮件 -->
            </template>
          </a-form-item>
          <!-- end vid_j2wozrjgzj 表单项容器_caee0gojwo -->
        </a-form>
        <!-- end vid_9ts69zdrpu 表单容器_1xqo2hml83 -->
      </a-modal>
      <!-- end vid_qvxk999uqh 工时导出 -->
      <!-- begin vid_39eb6hf1tp 任务详情 -->
      <a-modal
        class="vid_39eb6hf1tp"
        v-model:visible="vid_39eb6hf1tp_props.visible"
        :footer="null"
        :centered="true"
        :title="'任务详情'"
        :maskClosable="false"
        :width="1200"
        @cancel="handle_vid_39eb6hf1tp_cancel"
        @ok="handle_vid_39eb6hf1tp_ok"
      >
        <!-- begin vid_4dv2jp2d8m 表格_5iz440uo15 -->
        <!-- 表格_5iz440uo15 -->
        <a-table
          class="vid_4dv2jp2d8m"
          :totalNumber="vid_4dv2jp2d8m_props.totalNumber"
          :bordered="true"
          :editRowSaveLoading="vid_4dv2jp2d8m_props.editRowSaveLoading"
          :sorter="vid_4dv2jp2d8m_props.sorter"
          :currentRow="vid_4dv2jp2d8m_props.currentRow"
          :selectedRowList="vid_4dv2jp2d8m_props.selectedRowList"
          :data-source="vid_4dv2jp2d8m_options()"
          @change="handle_vid_4dv2jp2d8m_change"
          :columns="vid_4dv2jp2d8m_columns"
          :pagination="false"
          row-key="id"
          @resizeColumn="(w, col) => handleResizeColumn(w, col, 'vid_4dv2jp2d8m')"
          :scroll="{ y: '600px', scrollToFirstRowOnChange: true, }"
          :row-class-name="(_record, index) => (index % 2 === 1 ? 'table-striped-even' : 'table-striped-odd')"
        >
          <template #headerCell="{ title, column }">
            <TableHeaderCell :title="title" :column="column" />
          </template>
          <template #bodyCell="{ text, column, record, index }">
            <!-- 序号列 -->
            <template v-if="column && column.dataIndex === 'vid_4dv2jp2d8m_serialNumber'">
              {{ index + 1 }}
            </template>
            <!-- {"type":"value","dataType":"STRING","link":"","value":"任务名称"} 列内容 -->
            <template v-if="column.dataIndex === 'taskName' && !column.customRender">
              <text-table-cell
                :rowData="record"
                :conditionValueMap="vid_4dv2jp2d8m_props.boundaryValueMap"
                :dataSource="vid_4dv2jp2d8m_props.contentDataSource[column.dataIndex]"
                :columnsConfig="column"
                :value="text"
              />
            </template>
            <!-- {"type":"value","dataType":"STRING","link":"","value":"任务状态"} 列内容 -->
            <template v-if="column.dataIndex === 'taskStatus' && !column.customRender">
              <text-table-cell
                :rowData="record"
                :conditionValueMap="vid_4dv2jp2d8m_props.boundaryValueMap"
                :dataSource="vid_4dv2jp2d8m_props.contentDataSource[column.dataIndex]"
                :columnsConfig="column"
                :value="text"
              />
            </template>
            <!-- {"type":"value","dataType":"STRING","link":"","value":"优先级"} 列内容 -->
            <template v-if="column.dataIndex === 'priorityStr' && !column.customRender">
              <text-table-cell
                :rowData="record"
                :conditionValueMap="vid_4dv2jp2d8m_props.boundaryValueMap"
                :dataSource="vid_4dv2jp2d8m_props.contentDataSource[column.dataIndex]"
                :columnsConfig="column"
                :value="text"
              />
            </template>
            <!-- {"type":"value","dataType":"STRING","link":"","value":"任务类型"} 列内容 -->
            <template v-if="column.dataIndex === 'taskType' && !column.customRender">
              <text-table-cell
                :rowData="record"
                :conditionValueMap="vid_4dv2jp2d8m_props.boundaryValueMap"
                :dataSource="vid_4dv2jp2d8m_props.contentDataSource[column.dataIndex]"
                :columnsConfig="column"
                :value="text"
              />
            </template>
            <!-- {"type":"value","dataType":"STRING","link":"","value":"计划完成时间"} 列内容 -->
            <template v-if="column.dataIndex === 'endTime' && !column.customRender">
              <text-table-cell
                :rowData="record"
                :conditionValueMap="vid_4dv2jp2d8m_props.boundaryValueMap"
                :dataSource="vid_4dv2jp2d8m_props.contentDataSource[column.dataIndex]"
                :columnsConfig="column"
                :value="text"
              />
            </template>
            <!-- {"type":"value","dataType":"STRING","link":"","value":"所属项目阶段"} 列内容 -->
            <template v-if="column.dataIndex === 'milepostName' && !column.customRender">
              <text-table-cell
                :rowData="record"
                :conditionValueMap="vid_4dv2jp2d8m_props.boundaryValueMap"
                :dataSource="vid_4dv2jp2d8m_props.contentDataSource[column.dataIndex]"
                :columnsConfig="column"
                :value="text"
              />
            </template>
            <!-- {"type":"value","dataType":"STRING","link":"","value":"所属项目"} 列内容 -->
            <template v-if="column.dataIndex === 'projectName' && !column.customRender">
              <text-table-cell
                :rowData="record"
                :conditionValueMap="vid_4dv2jp2d8m_props.boundaryValueMap"
                :dataSource="vid_4dv2jp2d8m_props.contentDataSource[column.dataIndex]"
                :columnsConfig="column"
                :value="text"
              />
            </template>
            <!-- {"type":"value","dataType":"STRING","link":"","value":"计划开始时间"} 列内容 -->
            <template v-if="column.dataIndex === 'startTime' && !column.customRender">
              <text-table-cell
                :rowData="record"
                :conditionValueMap="vid_4dv2jp2d8m_props.boundaryValueMap"
                :dataSource="vid_4dv2jp2d8m_props.contentDataSource[column.dataIndex]"
                :columnsConfig="column"
                :value="text"
              />
            </template>
            <!-- {"type":"value","dataType":"STRING","link":"","value":"实际开始时间"} 列内容 -->
            <template v-if="column.dataIndex === 'actualStarTime' && !column.customRender">
              <text-table-cell
                :rowData="record"
                :conditionValueMap="vid_4dv2jp2d8m_props.boundaryValueMap"
                :dataSource="vid_4dv2jp2d8m_props.contentDataSource[column.dataIndex]"
                :columnsConfig="column"
                :value="text"
              />
            </template>
            <!-- {"type":"value","dataType":"STRING","link":"","value":"其他参与人"} 列内容 -->
            <template v-if="column.dataIndex === 'taskParticipantOthersStr' && !column.customRender">
              <text-table-cell
                :rowData="record"
                :conditionValueMap="vid_4dv2jp2d8m_props.boundaryValueMap"
                :dataSource="vid_4dv2jp2d8m_props.contentDataSource[column.dataIndex]"
                :columnsConfig="column"
                :value="text"
              />
            </template>
          </template>
        </a-table>
        <!-- end vid_4dv2jp2d8m 表格_5iz440uo15 -->
      </a-modal>
      <!-- end vid_39eb6hf1tp 任务详情 -->
      <!-- begin vid_dh740syu1p 布局容器_23sly1us61 -->
      <a-row class="vid_dh740syu1p" :gutter="16" :slots="'4:20'">
        <a-col :span="4">
          <!-- begin vid_be2g827ckw 容器_b6fm2tt2po -->
          <al-box class="vid_be2g827ckw">
            <!-- begin vid_z1yxlq2dr5 绩效管理 -->
            <span class="vid_z1yxlq2dr5"> 绩效管理 </span>
            <!-- end vid_z1yxlq2dr5 绩效管理 -->
            <!-- begin vid_msa3chul2q 输入框_p378idqpaz -->
            <a-input
              autocomplete="off"
              class="vid_msa3chul2q"
              v-model:value="vid_msa3chul2q_props.value"
              :placeholder="'请输入员工部门或姓名进行查询'"
              :allowClear="true"
              @change="handle_vid_msa3chul2q_change"
            >
              <template #suffix
                ><span role="img" class="anticon"
                  ><embed
                    style="width: 1em;height:1em;"
                    src="" /></span
              ></template>
            </a-input>
            <!-- end vid_msa3chul2q 输入框_p378idqpaz -->
            <!-- begin vid_yrpmsr6tyj 容器_kujkd8nx1s -->
            <al-box class="vid_yrpmsr6tyj">
              <!-- begin vid_ky6skiuo0o 树形控件_829006vfva -->
              <al-tree-extend
                class="vid_ky6skiuo0o"
                v-model:checkedKeys="vid_ky6skiuo0o_props.checkedKeys"
                v-model:selectedKeys="vid_ky6skiuo0o_props.selectedKeys"
                v-model:expandedKeys="vid_ky6skiuo0o_props.expandedKeys"
                :fieldNames="{'children':'children','title':'name','key':'id'}"
                :selectedBackgroundColor="'#EBF1FF'"
                :backgroundColor="'#F5F5F5'"
                :lazyParams="vid_ky6skiuo0o_props.lazyParams"
                :clickNode="vid_ky6skiuo0o_props.clickNode"
                :selected="vid_ky6skiuo0o_props.selected"
                :treeData="vid_ky6skiuo0o_options()"
                @select="handle_vid_ky6skiuo0o_select"
                style="--background-hover: #F5F5F5; --background-select: #EBF1FF"
              >
              </al-tree-extend>
              <!-- end vid_ky6skiuo0o 树形控件_829006vfva -->
            </al-box>
            <!-- end vid_yrpmsr6tyj 容器_kujkd8nx1s -->
          </al-box>
          <!-- end vid_be2g827ckw 容器_b6fm2tt2po -->
        </a-col>
        <a-col :span="20">
          <!-- begin vid_mktwbpfzp7 容器_cyx8mkrz4i -->
          <al-box class="vid_mktwbpfzp7">
            <!-- begin vid_ds98tkycyx 标签页_el1zjalx2t -->
            <a-tabs class="vid_ds98tkycyx" v-model:activeKey="vid_ds98tkycyx_props.activeKey">
              <template #leftExtra> </template>
              <template #rightExtra> </template>
              <a-tab-pane key="Tab1" force-render>
                <template #tab> 人效分析 </template>
                <!-- begin vid_ko7ckwyfrl 布局容器_ftz90kwyek -->
                <a-row class="vid_ko7ckwyfrl" :slots="'18:6'">
                  <a-col :span="18">
                    <!-- begin vid_qa9q0lk8g7 日期区间_up9v8a1c2y -->
                    <a-range-picker
                      class="vid_qa9q0lk8g7"
                      :allowEmpty="[true,true]"
                      :getPopupContainer="(node) => node.parentNode"
                      v-model:value="vid_qa9q0lk8g7_props.value"
                      :format="'YYYY-MM-DD'"
                      :valueFormat="'YYYY-MM-DD'"
                      :placeholder="['开始时间','结束时间']"
                      :showTime="vid_qa9q0lk8g7_props.showTime"
                      @change="handle_vid_qa9q0lk8g7_change"
                    >
                    </a-range-picker>
                    <!-- end vid_qa9q0lk8g7 日期区间_up9v8a1c2y -->
                    <!-- begin vid_tnxzj055n7 年 -->
                    <a-button class="vid_tnxzj055n7" @click="handle_vid_tnxzj055n7_click"> 年 </a-button>
                    <!-- end vid_tnxzj055n7 年 -->
                    <!-- begin vid_ufsd2j5ajm 月 -->
                    <a-button class="vid_ufsd2j5ajm" @click="handle_vid_ufsd2j5ajm_click"> 月 </a-button>
                    <!-- end vid_ufsd2j5ajm 月 -->
                    <!-- begin vid_7woqb2kh3o 周 -->
                    <a-button class="vid_7woqb2kh3o" @click="handle_vid_7woqb2kh3o_click"> 周 </a-button>
                    <!-- end vid_7woqb2kh3o 周 -->
                  </a-col>
                  <a-col :span="6">
                    <!-- begin vid_qi9e0kx08t 容器_3gdvlu9bep -->
                    <al-box class="vid_qi9e0kx08t">
                      <!-- begin vid_410ad96obp 工时导出 -->
                      <a-button class="vid_410ad96obp" @click="handle_vid_410ad96obp_click">
                        <template #icon><upload-outlined /></template>

                        工时导出
                      </a-button>
                      <!-- end vid_410ad96obp 工时导出 -->
                    </al-box>
                    <!-- end vid_qi9e0kx08t 容器_3gdvlu9bep -->
                  </a-col>
                </a-row>
                <!-- end vid_ko7ckwyfrl 布局容器_ftz90kwyek -->
                <!-- begin vid_46es9v750t 容器_vlh1eeubrn -->
                <al-box class="vid_46es9v750t">
                  <!-- begin vid_q1dfhdw71s 布局容器_u1quythsuj -->
                  <a-row class="vid_q1dfhdw71s" :slots="'4:5:5:5:5'">
                    <a-col :span="4">
                      <!-- begin vid_i24xbz7tyb 容器_5a1z5x3c8i -->
                      <al-box class="vid_i24xbz7tyb">
                        <!-- begin vid_8rpbl9in8j 图片_9xszcv14jr -->
                        <al-image
                          class="vid_8rpbl9in8j"
                          :emptyImgSrc="''"
                          :objectFit="'fill'"
                          :src="vid_8rpbl9in8j_props.src"
                          :width="'32'"
                          :height="'32'"
                        />
                        <!-- end vid_8rpbl9in8j 图片_9xszcv14jr -->
                        <!-- begin vid_kd0kj9be30 简单文本_z0hkzscmzu -->
                        <span class="vid_kd0kj9be30"> 参与项目数： </span>
                        <!-- end vid_kd0kj9be30 简单文本_z0hkzscmzu -->
                        <!-- begin vid_rrs54r857i 简单文本_oa1tx2ophs -->
                        <span class="vid_rrs54r857i">
                          {{ renderStringInTemplate(vid_rrs54r857i_props.rt_text) }}
                        </span>
                        <!-- end vid_rrs54r857i 简单文本_oa1tx2ophs -->
                      </al-box>
                      <!-- end vid_i24xbz7tyb 容器_5a1z5x3c8i -->
                    </a-col>
                    <a-col :span="5">
                      <!-- begin vid_2xnlmf974q 容器_6lp3165b6x -->
                      <al-box class="vid_2xnlmf974q">
                        <!-- begin vid_39jwjldn49 容器_jkpqb6f98y -->
                        <al-box class="vid_39jwjldn49">
                          <!-- begin vid_yyhxxim3lo 图片_v1m3wvvm83 -->
                          <al-image
                            class="vid_yyhxxim3lo"
                            :emptyImgSrc="''"
                            :objectFit="'fill'"
                            :src="vid_yyhxxim3lo_props.src"
                            :width="'32'"
                            :height="'32'"
                          />
                          <!-- end vid_yyhxxim3lo 图片_v1m3wvvm83 -->
                          <!-- begin vid_on0oc8d53z 简单文本_5p4gz8tv6y -->
                          <span class="vid_on0oc8d53z"> 投入工时： </span>
                          <!-- end vid_on0oc8d53z 简单文本_5p4gz8tv6y -->
                          <!-- begin vid_0w9ukc5mcv 简单文本_b7itgcp040 -->
                          <span class="vid_0w9ukc5mcv">
                            {{ renderStringInTemplate(vid_0w9ukc5mcv_props.rt_text) }}
                          </span>
                          <!-- end vid_0w9ukc5mcv 简单文本_b7itgcp040 -->
                        </al-box>
                        <!-- end vid_39jwjldn49 容器_jkpqb6f98y -->
                      </al-box>
                      <!-- end vid_2xnlmf974q 容器_6lp3165b6x -->
                    </a-col>
                    <a-col :span="5">
                      <!-- begin vid_jlvaszmibf 容器_zp2jhc3rwm -->
                      <al-box class="vid_jlvaszmibf">
                        <!-- begin vid_6myzbssu27 容器_2d7shdldvf -->
                        <al-box class="vid_6myzbssu27">
                          <!-- begin vid_0fggt85rit 图片_6urct32dnv -->
                          <al-image
                            class="vid_0fggt85rit"
                            :emptyImgSrc="''"
                            :objectFit="'fill'"
                            :src="vid_0fggt85rit_props.src"
                            :width="'32'"
                            :height="'32'"
                          />
                          <!-- end vid_0fggt85rit 图片_6urct32dnv -->
                          <!-- begin vid_mtgxzglmpz 简单文本_1rl6m177kn -->
                          <span class="vid_mtgxzglmpz"> 完成任务数： </span>
                          <!-- end vid_mtgxzglmpz 简单文本_1rl6m177kn -->
                          <!-- begin vid_bss479grk1 简单文本_9f0j6ct34h -->
                          <span class="vid_bss479grk1">
                            {{ renderStringInTemplate(vid_bss479grk1_props.rt_text) }}
                          </span>
                          <!-- end vid_bss479grk1 简单文本_9f0j6ct34h -->
                        </al-box>
                        <!-- end vid_6myzbssu27 容器_2d7shdldvf -->
                      </al-box>
                      <!-- end vid_jlvaszmibf 容器_zp2jhc3rwm -->
                    </a-col>
                    <a-col :span="5">
                      <!-- begin vid_dxdruzm1ps 容器_wiftezt30o -->
                      <al-box class="vid_dxdruzm1ps">
                        <!-- begin vid_rffa6a0dr9 容器_lq1g527b1g -->
                        <al-box class="vid_rffa6a0dr9">
                          <!-- begin vid_bp6snm5f99 图片_mkqcjivja4 -->
                          <al-image
                            class="vid_bp6snm5f99"
                            :emptyImgSrc="''"
                            :objectFit="'fill'"
                            :src="vid_bp6snm5f99_props.src"
                            :width="'32'"
                            :height="'32'"
                          />
                          <!-- end vid_bp6snm5f99 图片_mkqcjivja4 -->
                          <!-- begin vid_mmnxbfoalk 简单文本_poabtylzht -->
                          <span class="vid_mmnxbfoalk"> 延期完成任务数： </span>
                          <!-- end vid_mmnxbfoalk 简单文本_poabtylzht -->
                          <!-- begin vid_ou7szm3hib 简单文本_2jnpf8eubx -->
                          <span class="vid_ou7szm3hib">
                            {{ renderStringInTemplate(vid_ou7szm3hib_props.rt_text) }}
                          </span>
                          <!-- end vid_ou7szm3hib 简单文本_2jnpf8eubx -->
                        </al-box>
                        <!-- end vid_rffa6a0dr9 容器_lq1g527b1g -->
                      </al-box>
                      <!-- end vid_dxdruzm1ps 容器_wiftezt30o -->
                    </a-col>
                    <a-col :span="5">
                      <!-- begin vid_6ur60yiouc 容器_q03zhn0l5l -->
                      <al-box class="vid_6ur60yiouc">
                        <!-- begin vid_luz09dwi2q 容器_hfcjxbit05 -->
                        <al-box class="vid_luz09dwi2q">
                          <!-- begin vid_25fj7j6na8 图片_sj4patt8eu -->
                          <al-image
                            class="vid_25fj7j6na8"
                            :emptyImgSrc="''"
                            :objectFit="'fill'"
                            :src="vid_25fj7j6na8_props.src"
                            :width="'32'"
                            :height="'32'"
                          />
                          <!-- end vid_25fj7j6na8 图片_sj4patt8eu -->
                          <!-- begin vid_4yi8vxorje 简单文本_o4xnmb7id3 -->
                          <span class="vid_4yi8vxorje"> 完成质量(bug数)： </span>
                          <!-- end vid_4yi8vxorje 简单文本_o4xnmb7id3 -->
                          <!-- begin vid_sz30s7hjid 简单文本_jz76mlcs6k -->
                          <span class="vid_sz30s7hjid">
                            {{ renderStringInTemplate(vid_sz30s7hjid_props.rt_text) }}
                          </span>
                          <!-- end vid_sz30s7hjid 简单文本_jz76mlcs6k -->
                        </al-box>
                        <!-- end vid_luz09dwi2q 容器_hfcjxbit05 -->
                      </al-box>
                      <!-- end vid_6ur60yiouc 容器_q03zhn0l5l -->
                    </a-col>
                  </a-row>
                  <!-- end vid_q1dfhdw71s 布局容器_u1quythsuj -->
                </al-box>
                <!-- end vid_46es9v750t 容器_vlh1eeubrn -->
                <!-- begin vid_a8m3zvbhr4 布局容器_pdeqsvrk94 -->
                <a-row class="vid_a8m3zvbhr4" :gutter="16" :slots="'8:8:4:4'">
                  <a-col :span="8">
                    <!-- begin vid_ky802x16uw 简单文本_24z7615ccc -->
                    <span class="vid_ky802x16uw"> 人效详情 </span>
                    <!-- end vid_ky802x16uw 简单文本_24z7615ccc -->
                  </a-col>
                  <a-col :span="8"> </a-col>
                  <a-col :span="4">
                    <!-- begin vid_76v0292ryl 下拉框_选择项目 -->
                    <a-select
                      class="vid_76v0292ryl"
                      :getPopupContainer="(node) => node.parentNode"
                      v-model:value="vid_76v0292ryl_props.value"
                      :showArrow="true"
                      :filterOption="(input, option) => {
          return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
        }"
                      :dropdownMatchSelectWidth="true"
                      :showSearch="true"
                      :placeholder="'请选择项目'"
                      :allowClear="true"
                      :searchValue="vid_76v0292ryl_props.searchValue"
                      :selected="vid_76v0292ryl_props.selected"
                      :options="vid_76v0292ryl_options()"
                      @focus="handle_vid_76v0292ryl_focus"
                      @change="handle_vid_76v0292ryl_change"
                      @search="handle_vid_76v0292ryl_search"
                    >
                    </a-select>
                    <!-- end vid_76v0292ryl 下拉框_选择项目 -->
                  </a-col>
                  <a-col :span="4">
                    <!-- begin vid_er0pfeabqd 下拉框_选择任务状态 -->
                    <a-select
                      class="vid_er0pfeabqd"
                      :getPopupContainer="(node) => node.parentNode"
                      v-model:value="vid_er0pfeabqd_props.value"
                      :showArrow="true"
                      :filterOption="(input, option) => {
          return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
        }"
                      :dropdownMatchSelectWidth="true"
                      :showSearch="true"
                      :placeholder="'请选择任务状态'"
                      :allowClear="true"
                      :searchValue="vid_er0pfeabqd_props.searchValue"
                      :selected="vid_er0pfeabqd_props.selected"
                      :options="vid_er0pfeabqd_options()"
                      @focus="handle_vid_er0pfeabqd_focus"
                      @change="handle_vid_er0pfeabqd_change"
                      @search="handle_vid_er0pfeabqd_search"
                    >
                    </a-select>
                    <!-- end vid_er0pfeabqd 下拉框_选择任务状态 -->
                  </a-col>
                </a-row>
                <!-- end vid_a8m3zvbhr4 布局容器_pdeqsvrk94 -->
                <!-- begin vid_fgla2qxy4y 表格_人效详情 -->
                <!-- 表格_人效详情 -->
                <a-table
                  class="vid_fgla2qxy4y"
                  :totalNumber="vid_fgla2qxy4y_props.totalNumber"
                  :bordered="true"
                  :editRowSaveLoading="vid_fgla2qxy4y_props.editRowSaveLoading"
                  :sorter="vid_fgla2qxy4y_props.sorter"
                  :currentRow="vid_fgla2qxy4y_props.currentRow"
                  :selectedRowList="vid_fgla2qxy4y_props.selectedRowList"
                  :data-source="vid_fgla2qxy4y_options()"
                  @change="handle_vid_fgla2qxy4y_change"
                  :columns="vid_fgla2qxy4y_columns"
                  :pagination="vid_fgla2qxy4y_pagination"
                  row-key="id"
                  @resizeColumn="(w, col) => handleResizeColumn(w, col, 'vid_fgla2qxy4y')"
                  :scroll="{ scrollToFirstRowOnChange: true, }"
                  :row-class-name="(_record, index) => (index % 2 === 1 ? 'table-striped-even' : 'table-striped-odd')"
                >
                  <template #headerCell="{ title, column }">
                    <TableHeaderCell :title="title" :column="column" />
                  </template>
                  <template #bodyCell="{ text, column, record, index }">
                    <!-- 序号列 -->
                    <template v-if="column && column.dataIndex === 'vid_fgla2qxy4y_serialNumber'">
                      {{ index + 1 }}
                    </template>
                    <!-- {"type":"value","dataType":"STRING","link":"","value":"项目名称"} 列内容 -->
                    <template v-if="column.dataIndex === 'projectName' && !column.customRender">
                      <text-table-cell
                        :rowData="record"
                        :conditionValueMap="vid_fgla2qxy4y_props.boundaryValueMap"
                        :dataSource="vid_fgla2qxy4y_props.contentDataSource[column.dataIndex]"
                        :columnsConfig="column"
                        :value="text"
                      />
                    </template>
                    <!-- {"type":"value","dataType":"STRING","link":"","value":"项目参与工时"} 列内容 -->
                    <template v-if="column.dataIndex === 'projectWorkHours' && !column.customRender">
                      <text-table-cell
                        :rowData="record"
                        :conditionValueMap="vid_fgla2qxy4y_props.boundaryValueMap"
                        :dataSource="vid_fgla2qxy4y_props.contentDataSource[column.dataIndex]"
                        :columnsConfig="column"
                        :value="text"
                      />
                    </template>
                    <!-- {"type":"value","dataType":"STRING","link":"","value":"项目阶段"} 列内容 -->
                    <template v-if="column.dataIndex === 'milepostName' && !column.customRender">
                      <text-table-cell
                        :rowData="record"
                        :conditionValueMap="vid_fgla2qxy4y_props.boundaryValueMap"
                        :dataSource="vid_fgla2qxy4y_props.contentDataSource[column.dataIndex]"
                        :columnsConfig="column"
                        :value="text"
                      />
                    </template>
                    <!-- {"type":"value","dataType":"STRING","link":"","value":"任务名称"} 列内容 -->
                    <template v-if="column.dataIndex === 'taskName' && !column.customRender">
                      <text-table-cell
                        :rowData="record"
                        :conditionValueMap="vid_fgla2qxy4y_props.boundaryValueMap"
                        :dataSource="vid_fgla2qxy4y_props.contentDataSource[column.dataIndex]"
                        :columnsConfig="column"
                        :value="text"
                      />
                    </template>
                    <!-- {"type":"value","dataType":"STRING","link":"","value":"任务参与工时"} 列内容 -->
                    <template v-if="column.dataIndex === 'actualWorkHours' && !column.customRender">
                      <text-table-cell
                        :rowData="record"
                        :conditionValueMap="vid_fgla2qxy4y_props.boundaryValueMap"
                        :dataSource="vid_fgla2qxy4y_props.contentDataSource[column.dataIndex]"
                        :columnsConfig="column"
                        :value="text"
                      />
                    </template>
                    <!-- {"type":"value","dataType":"STRING","link":"","value":"任务状态"} 列内容 -->
                    <template v-if="column.dataIndex === 'taskStatus' && !column.customRender">
                      <text-table-cell
                        :rowData="record"
                        :conditionValueMap="vid_fgla2qxy4y_props.boundaryValueMap"
                        :dataSource="vid_fgla2qxy4y_props.contentDataSource[column.dataIndex]"
                        :columnsConfig="column"
                        :value="text"
                      />
                    </template>
                    <!-- {"type":"value","dataType":"STRING","link":"","value":"计划完成"} 列内容 -->
                    <template v-if="column.dataIndex === 'endTime' && !column.customRender">
                      <text-table-cell
                        :rowData="record"
                        :conditionValueMap="vid_fgla2qxy4y_props.boundaryValueMap"
                        :dataSource="vid_fgla2qxy4y_props.contentDataSource[column.dataIndex]"
                        :columnsConfig="column"
                        :value="text"
                      />
                    </template>
                    <!-- {"type":"value","dataType":"STRING","link":"","value":"实际完成"} 列内容 -->
                    <template v-if="column.dataIndex === 'taskFinishTime' && !column.customRender">
                      <text-table-cell
                        :rowData="record"
                        :conditionValueMap="vid_fgla2qxy4y_props.boundaryValueMap"
                        :dataSource="vid_fgla2qxy4y_props.contentDataSource[column.dataIndex]"
                        :columnsConfig="column"
                        :value="text"
                      />
                    </template>
                  </template>
                </a-table>
                <!-- end vid_fgla2qxy4y 表格_人效详情 -->
              </a-tab-pane>
              <a-tab-pane key="Tab2" force-render>
                <template #tab> 工作计划 </template>
                <!-- begin vid_3g64ct4ptn 日历_urrxpa7u19 -->
                <al-full-calendar
                  class="vid_3g64ct4ptn"
                  v-model:selectDate="vid_3g64ct4ptn_props.selectDate"
                  v-model:selectEvent="vid_3g64ct4ptn_props.selectEvent"
                  :buttonDefaultColor="'#ABC4FB'"
                  :buttonDisableColor="'#ABC4FB'"
                  :themeColor="['#BECDFC','#BBECD4','#B7E5FF','#CAC9FF','#FFE0C9']"
                  :eventColor="'#262626'"
                  :initialEvents="vid_3g64ct4ptn_options()"
                  @eventClick="handle_vid_3g64ct4ptn_eventClick"
                >
                </al-full-calendar>
                <!-- end vid_3g64ct4ptn 日历_urrxpa7u19 -->
              </a-tab-pane>
            </a-tabs>
            <!-- end vid_ds98tkycyx 标签页_el1zjalx2t -->
          </al-box>
          <!-- end vid_mktwbpfzp7 容器_cyx8mkrz4i -->
        </a-col>
      </a-row>
      <!-- end vid_dh740syu1p 布局容器_23sly1us61 -->
    </a-spin>
  </div>
</template>
<script setup lang="tsx">
  import {
      h, ref, reactive, toRaw, markRaw, watch, computed,
      onBeforeMount, onMounted, onBeforeUnmount, onUnmounted, onActivated, onDeactivated
    } from "vue";
    import { useRoute, useRouter } from 'vue-router';
    const router = useRouter();
    const route = useRoute();
    import { get, post, put, del, request, requestWithHeaders } from '@/utils/http/Axios';
    import { cloneDeep, localGet, merge, getDifferenceArray, traversalTreeStructure, checkCaseCondition, renderStringInTemplate, handleBreadcrumbJump, throttle, permission } from '@/utils/index';
    import { isNullOrEmpty, isEmptyArr, isNullOrUnDef, isContained, isArray, isEmpty, isObject } from '@/utils/is';
    import dayjs from 'dayjs';
    import { getPagePcChartsDataSourceConvert } from '@/utils/chart';
    import { message, notification, Modal } from 'ant-design-vue'
    import { propertyFormatByNumber, propertyFormatByPercentage, propertyFormatByDate } from '@/utils/format';
    
    import UserTableRecords from '@/model/UserTableRecords';
    import { getAppBaseUrl } from '@/utils/index';
    import { sendToken } from "@/hooks/useIframeToken";
    

  import { TreeSelect } from 'ant-design-vue';
  const SHOW_CHILD = TreeSelect.SHOW_CHILD;
  const SHOW_ALL = TreeSelect.SHOW_ALL;
  const SHOW_PARENT = TreeSelect.SHOW_PARENT;
  import TextTableCell from '@/components/page/tableCell/text.vue';
  import NumberTableCell from '@/components/page/tableCell/number.vue';
  import ProgressTableCell from '@/components/page/tableCell/progress.vue';
  import OptionsTableCell from '@/components/page/tableCell/options.vue';
  import DatePickerTableCell from '@/components/page/tableCell/datePicker.vue';
  import RangePickerTableCell from '@/components/page/tableCell/rangePicker.vue';
  import RangeNumberTableCell from '@/components/page/tableCell/rangeNumber.vue';
  import BoolTableCell from '@/components/page/tableCell/bool.vue';
  import TableHeaderCell from '@/components/page/TableHeaderCell.vue';

      // 获取传入的流程ID
      const props = defineProps({
        processInstanceId: {
            type: String
        }
      })
      const immediateWatch = (source, callback) => {
        watch(source, callback, {deep: true,immediate: true })
      }



  /* -------------------------- 属性定义 -------------------------- */

      const setTimeOutList = [];
      const pageLoading = reactive({
        loading: false,
        tip: undefined
      });
      const authInfo = localGet('app-user-store');

    const vid_qvxk999uqh_props = reactive({
          visible: false,
  })

    const vid_9ts69zdrpu_props = reactive({
          formModel: {"e_ohp5mnovfk":"","u_pkg3q6xtgy":"","q_17j7f9yd7e":"","z_wzdeaf5k4y":""},
  })

    const vid_ysl4fo0g9p_props = reactive({
          showTime: undefined,
      value: "",
  })

    const vid_5nqxinjcl4_props = reactive({
          selected: {"label":[],"value":[],"option":[]},
      value: undefined,
  })

    const vid_9j88td624v_props = reactive({
          value: undefined,
  })

    const vid_ly1dsvmc8d_props = reactive({
          selected: {"label":[],"value":[],"option":[]},
      value: undefined,
  })

    const vid_39eb6hf1tp_props = reactive({
          visible: false,
  })

    const vid_4dv2jp2d8m_props = reactive({
          systemSort: [],
      sorter: {},
      editRowSaveLoading: {},
      currentRow: {"taskName":"","taskStatus":"","priorityStr":"","taskType":"","endTime":"","milepostName":"","projectName":"","startTime":"","actualStarTime":"","taskParticipantOthersStr":""},
      selectedRowList: {"workHours":[],"projectWorkHours":[],"userWorkHoursRatio":[],"custom9":[],"taskType":[],"projectWorkHoursRatio":[],"actualWorkHours":[],"taskFinishTime":[],"custom3":[],"custom4":[],"actualStarTime":[],"custom1":[],"startTime":[],"custom2":[],"custom7":[],"custom8":[],"taskStatus":[],"custom5":[],"custom6":[],"milepostName":[],"priorityStr":[],"taskParticipantOthersStr":[],"userName":[],"c1":[],"taskName":[],"endTime":[],"projectName":[]},
      totalNumber: undefined,
      rt_tableConfig: {"layout":{"showHeader":true,"sticky":false,"operationColumnFixed":"default"},"pagination":{"current":1,"pageSizeOptions":"10,20,30,40","enable":false,"showTotal":true,"hideOnSinglePage":false,"pageSize":"10","simple":false,"sync":true,"showQuickJumper":true,"showSizeChanger":false},"scroll":{"x":"","y":"600px","scrollToFirstRowOnChange":true},"style":{"contentStyle":{"borderColor":"#D9D9D9","enableContentStyle":true,"fontFamily":"arial, helvetica, \"microsoft yahei\";","lintHeight":40,"borderWidth":1,"evenLineBackColor":"#F8FAFC","textWeight":"400","fontSize":14,"oddLineBackColor":"#FFFFFF","textColor":"#262626"},"paginationStyle":{"layout":"bottomRight","size":"default"},"headerStyle":{"borderColor":"#D9D9D9","backgroundColor":"#3875FF","fontFamily":"arial, helvetica, \"microsoft yahei\";","lintHeight":40,"borderWidth":1,"textWeight":"600","fontSize":14,"enableTextStyle":true,"textColor":"#FFFFFF"}},"basic":{"rowSelection":false,"rowEdit":{"cancelText":"取消","editText":"编辑","saveText":"保存"},"title":"","showSequenceNumber":false,"rowKey":"id"}},
      columnList: [
          {
            id: '3gg60ml9e3',
            dataIndex: 'taskName',
            headerComment: false,
            title: '任务名称',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            width: '150px',
            resizable: true,
          },
          {
            id: '2u3mc870lj',
            dataIndex: 'taskStatus',
            headerComment: false,
            title: '任务状态',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            width: '100px',
            resizable: true,
          },
          {
            id: 'v1jluxc4ey',
            dataIndex: 'priorityStr',
            headerComment: false,
            title: '优先级',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            width: '100px',
            resizable: true,
          },
          {
            id: 'kp03so0b5c',
            dataIndex: 'taskType',
            headerComment: false,
            title: '任务类型',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            width: '100px',
            resizable: true,
          },
          {
            id: 'drh435yiyt',
            dataIndex: 'endTime',
            headerComment: false,
            title: '计划完成时间',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            width: '170px',
            resizable: true,
          },
          {
            id: '134shbajv8',
            dataIndex: 'milepostName',
            headerComment: false,
            title: '所属项目阶段',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            width: '150px',
            resizable: true,
          },
          {
            id: 'lbjqpvaywu',
            dataIndex: 'projectName',
            headerComment: false,
            title: '所属项目',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            width: '150px',
            resizable: true,
          },
          {
            id: 'jzs34gvifi',
            dataIndex: 'startTime',
            headerComment: false,
            title: '计划开始时间',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            width: '170px',
            resizable: true,
          },
          {
            id: '9r851ky8mp',
            dataIndex: 'actualStarTime',
            headerComment: false,
            title: '实际开始时间',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            width: '150px',
            resizable: true,
          },
          {
            id: '8ppi58u4bp',
            dataIndex: 'taskParticipantOthersStr',
            headerComment: false,
            title: '其他参与人',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            width: '250px',
            resizable: true,
          },

        ],
      rawColumnList: [],
      // 进行行合并所需的排序规则，必须将其加到排序字段的前面，以实现合并单元格
      rowMergeSort: [],
      // 完整的排序规则：需要将行合并的排序规则和排序字段的排序规则赋给该属性；调接口时会使用其作为排序条件
      systemSort: [],
      // 条件格式需要的边界值映射：key为边界值id，value为边界值数据
      boundaryValueMap: {},
      // 表格单元格内容渲染需要的外部数据源：key为列，value为该列单元格的外部数据源配置
      contentDataSource: {},
  })

    const vid_ds98tkycyx_props = reactive({
          activeKey: "Tab1",
  })

    const vid_3g64ct4ptn_props = reactive({
          selectDate: {"startLocalStr":"","endLocalStr":"","endIso":"","startIso":""},
      selectEvent: {"assessorName":"","assessor":-1,"taskOwner":"","description":"","delFlag":-1,"stateInput":"","taskType":"","updateBy":"","actualWorkHours":-1,"taskFinishTime":"","actualStarTime":"","createdTime":"","taskParticipantList":[{}],"startTime":"","taskParticipantOthersList":[{}],"workingHours":-1,"createdById":"","taskStatus":"","daysOfDelay":"","milepostName":"","priorityStr":"","updateTime":"","milepostId":-1,"taskParticipantOthersStr":"","priority":"","updateById":"","createdBy":"","taskDependency":"","taskParticipantStr":"","taskName":"","endTime":"","projectName":"","projectId":-1,"taskId":-1},
  })

    const vid_qa9q0lk8g7_props = reactive({
          showTime: undefined,
      format: "YYYY-MM-DD",
      valueFormat: "YYYY-MM-DD",
      value: undefined,
  })
// 图片 http://10.40.0.33:9001/file-storage/404789371980113920.png
import vid_25fj7j6na8_imageUrl from '@/assets/images/b1014329d5fa1e5c80f5d436ad31d375.png'

    const vid_25fj7j6na8_props = reactive({
          src: vid_25fj7j6na8_imageUrl,
  })

    const vid_sz30s7hjid_props = reactive({
          rt_text: undefined,
  })
// 图片 http://10.40.0.33:9001/file-storage/404789370132523008.png
import vid_bp6snm5f99_imageUrl from '@/assets/images/4ead9e33291a9ddf03b5451781d1a089.png'

    const vid_bp6snm5f99_props = reactive({
          src: vid_bp6snm5f99_imageUrl,
  })

    const vid_ou7szm3hib_props = reactive({
          rt_text: undefined,
  })
// 图片 http://10.40.0.33:9001/file-storage/404789365741086720.png
import vid_0fggt85rit_imageUrl from '@/assets/images/316821034b6da054524be34d2c2aae2d.png'

    const vid_0fggt85rit_props = reactive({
          src: vid_0fggt85rit_imageUrl,
  })

    const vid_bss479grk1_props = reactive({
          rt_text: undefined,
  })
// 图片 http://10.40.0.33:9001/file-storage/404789368089896960.png
import vid_yyhxxim3lo_imageUrl from '@/assets/images/307955c853b8ca59d9d9bcd0e9acaacd.png'

    const vid_yyhxxim3lo_props = reactive({
          src: vid_yyhxxim3lo_imageUrl,
  })

    const vid_0w9ukc5mcv_props = reactive({
          rt_text: undefined,
  })
// 图片 http://10.40.0.33:9001/file-storage/404789364931586048.png
import vid_8rpbl9in8j_imageUrl from '@/assets/images/aac6eeebd1f01c172f1d15586f47b8a6.png'

    const vid_8rpbl9in8j_props = reactive({
          src: vid_8rpbl9in8j_imageUrl,
  })

    const vid_rrs54r857i_props = reactive({
          rt_text: undefined,
  })

    const vid_er0pfeabqd_props = reactive({
          selected: {"label":"","value":"","option":{}},
      searchValue: undefined,
      value: undefined,
  })

    const vid_76v0292ryl_props = reactive({
          selected: {"label":"","value":"","option":{}},
      searchValue: undefined,
      value: undefined,
  })

    const vid_fgla2qxy4y_props = reactive({
          systemSort: [],
      sorter: {},
      editRowSaveLoading: {},
      currentRow: {"projectName":"","projectWorkHours":"","milepostName":"","taskName":"","actualWorkHours":"","taskStatus":"","endTime":"","taskFinishTime":""},
      selectedRowList: {"workHours":[],"milepostName":[],"projectWorkHours":[],"userWorkHoursRatio":[],"userName":[],"custom9":[],"projectWorkHoursRatio":[],"actualWorkHours":[],"taskFinishTime":[],"custom3":[],"custom4":[],"taskName":[],"custom1":[],"endTime":[],"custom2":[],"projectName":[],"custom7":[],"custom8":[],"taskStatus":[],"custom5":[],"custom6":[]},
      totalNumber: undefined,
      rt_tableConfig: {"layout":{"showHeader":true,"sticky":false,"operationColumnFixed":"default"},"pagination":{"current":1,"pageSizeOptions":"10,20,30,40","enable":true,"showTotal":true,"hideOnSinglePage":false,"pageSize":"8","simple":false,"sync":true,"showQuickJumper":true,"showSizeChanger":false},"scroll":{"x":"","y":"","scrollToFirstRowOnChange":true},"style":{"contentStyle":{"borderColor":"#D9D9D9","enableContentStyle":true,"fontFamily":"arial, helvetica, \"microsoft yahei\";","lintHeight":40,"borderWidth":1,"evenLineBackColor":"#F8FAFC","textWeight":"400","fontSize":14,"oddLineBackColor":"#FFFFFF","textColor":"#262626"},"paginationStyle":{"layout":"bottomRight","size":"default"},"headerStyle":{"borderColor":"#D9D9D9","backgroundColor":"#3875FF","fontFamily":"arial, helvetica, \"microsoft yahei\";","lintHeight":40,"borderWidth":1,"textWeight":"600","fontSize":14,"enableTextStyle":true,"textColor":"#FFFFFF"}},"basic":{"rowSelection":false,"rowEdit":{"cancelText":"取消","editText":"编辑","saveText":"保存"},"title":"","showSequenceNumber":false,"rowKey":"id"}},
      columnList: [
          {
            id: '3gg60ml9e3',
            dataIndex: 'projectName',
            headerComment: false,
            title: '项目名称',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: '2u3mc870lj',
            dataIndex: 'projectWorkHours',
            headerComment: false,
            title: '项目参与工时',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'v1jluxc4ey',
            dataIndex: 'milepostName',
            headerComment: false,
            title: '项目阶段',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'kp03so0b5c',
            dataIndex: 'taskName',
            headerComment: false,
            title: '任务名称',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'drh435yiyt',
            dataIndex: 'actualWorkHours',
            headerComment: false,
            title: '任务参与工时',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'lbjqpvaywu',
            dataIndex: 'taskStatus',
            headerComment: false,
            title: '任务状态',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'jzs34gvifi',
            dataIndex: 'endTime',
            headerComment: false,
            title: '计划完成',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: '9r851ky8mp',
            dataIndex: 'taskFinishTime',
            headerComment: false,
            title: '实际完成',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEdit: false,
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },

        ],
      rawColumnList: [],
      // 进行行合并所需的排序规则，必须将其加到排序字段的前面，以实现合并单元格
      rowMergeSort: [],
      // 完整的排序规则：需要将行合并的排序规则和排序字段的排序规则赋给该属性；调接口时会使用其作为排序条件
      systemSort: [],
      // 条件格式需要的边界值映射：key为边界值id，value为边界值数据
      boundaryValueMap: {},
      // 表格单元格内容渲染需要的外部数据源：key为列，value为该列单元格的外部数据源配置
      contentDataSource: {},
  })

    const vid_msa3chul2q_props = reactive({
          value: "",
  })

    const vid_ky6skiuo0o_props = reactive({
          lazyParams: undefined,
      selected: {"singleValue":"","title":[],"value":[],"option":[],"singleLabel":""},
      clickNode: {"nodeTitle":"","nodeKey":"","nodeParentKey":""},
      checkedKeys: [],
      selectedKeys: [],
      expandedKeys: [],
  })
  // ---------------------------- 定义模型数据 ----------------------------

    const a_y5d2eig5t4 = reactive({"e_ohp5mnovfk":""})

    // ============================ 定义模型数据 ============================




    const a_y5d2eig5t4_rules = reactive({
          e_ohp5mnovfk: [
          { required: true, message: '请选择日期!', trigger: 'blur' },
      ],

      q_17j7f9yd7e: [
          { required: true, message: '请输入工时天数!', trigger: 'blur' },
      ],
      z_wzdeaf5k4y: [
          { required: true, message: '请选择是否发送邮件!', trigger: 'blur' },
      ],
    })


      // 处理校验
      const setSubFormName =(parentInfo, name)=>{
        return [parentInfo.parents, parentInfo.cycleIndex, name];
      }


    const vid_5nqxinjcl4_options_raw = ref([])

      const vid_5nqxinjcl4_options = computed(() => {
            return () => vid_5nqxinjcl4_options_raw.value
          })



    const vid_ly1dsvmc8d_options_raw = ref([{"disabled":false,"label":"是","value":"1"},{"disabled":false,"label":"否","value":"2"}])

      const vid_ly1dsvmc8d_options = computed(() => {
            return () => vid_ly1dsvmc8d_options_raw.value
          })



    const vid_4dv2jp2d8m_options_raw = ref([])

      const vid_4dv2jp2d8m_options = computed(() => {
        return () => vid_4dv2jp2d8m_options_raw.value
      })



    const vid_3g64ct4ptn_options_raw = ref([])

      const vid_3g64ct4ptn_options = computed(() => {
        return (dataSource = vid_3g64ct4ptn_options_raw.value)=>{
          return (dataSource || []).map(item => {
            return {
              ...item,
              title: item.taskName,
          end: item.endTime,
          start: item.startTime
            }
          })
        }
      })



    const vid_er0pfeabqd_options_raw = ref([])

      const vid_er0pfeabqd_options = computed(() => {
        return (dataSource = vid_er0pfeabqd_options_raw.value)=>{
          return (dataSource || []).map(item => {
            return {
              ...item,
              value: item.taskStatus,
          disabled: !!item.disabled,
          label: item.taskStatus
            }
          })
        }
      })



    const vid_76v0292ryl_options_raw = ref([])

      const vid_76v0292ryl_options = computed(() => {
        return (dataSource = vid_76v0292ryl_options_raw.value)=>{
          return (dataSource || []).map(item => {
            return {
              ...item,
              value: item.code,
          disabled: !!item.disabled,
          label: item.projectName
            }
          })
        }
      })



    const vid_fgla2qxy4y_options_raw = ref([])

      const vid_fgla2qxy4y_options = computed(() => {
        return () => vid_fgla2qxy4y_options_raw.value
      })



    const vid_ky6skiuo0o_options_raw = ref([])

      const vid_ky6skiuo0o_options = computed(() => {
            return () => vid_ky6skiuo0o_options_raw.value
          })

  // 图表组件 下拉树_rhnlg9sj1m 条件格式数据依赖
  const vid_5nqxinjcl4_chartConditionDependencyMap = ref({
  })
  // 图表组件 单选按钮组_jcdp4etg9f 条件格式数据依赖
  const vid_ly1dsvmc8d_chartConditionDependencyMap = ref({
  })
  // 图表组件 表格_5iz440uo15 条件格式数据依赖
  const vid_4dv2jp2d8m_chartConditionDependencyMap = ref({
  })
  // 图表组件 日历_urrxpa7u19 条件格式数据依赖
  const vid_3g64ct4ptn_chartConditionDependencyMap = ref({
  })
  // 图表组件 下拉框_选择任务状态 条件格式数据依赖
  const vid_er0pfeabqd_chartConditionDependencyMap = ref({
  })
  // 图表组件 下拉框_选择项目 条件格式数据依赖
  const vid_76v0292ryl_chartConditionDependencyMap = ref({
  })
  // 图表组件 表格_人效详情 条件格式数据依赖
  const vid_fgla2qxy4y_chartConditionDependencyMap = ref({
  })
  // 图表组件 树形控件_829006vfva 条件格式数据依赖
  const vid_ky6skiuo0o_chartConditionDependencyMap = ref({
  })
  /* ========================== 属性定义 ========================== */


  /* -------------------------- 元素数据引用 -------------------------- */
  // 组件 表单容器_1xqo2hml83 ref 的引用
  const vid_9ts69zdrpu_ref = ref(null);

  /* ========================== 元素数据引用 ========================== */


  /* -------------------------- 页面数据 -------------------------- */

    // 页面数据 员工日报树形结构(2023.02.13)
    const dataConnector_conn_e3w2plo8ab_response = ref();
    const dataConnector_conn_e3w2plo8ab = async (additionParams = {}) => {
        const exec = async () => {

          // 获取参数
          const params = {
            role: undefined,
          partnershipOrCustomerName: undefined,
          dailyContent: undefined,
          reportedByList: undefined,
          pageSize: undefined,
          delFlag: undefined,
          projectCode: undefined,
          treeName: undefined,
          updateBy: undefined,
          pageNo: undefined,
          startingTime: undefined,
          nextPlan: undefined,
          department: undefined,
          workingHours: undefined,
          departmentNameList: undefined,
          dailyType: undefined,
          reportedBy: undefined,
          customerName: undefined,
          treeId: undefined,
          createBy: undefined,
          dailyDate: undefined,
          dailyItemId: undefined,
          name: vid_msa3chul2q_props?.value,
          ppmDailyItems: undefined,
          dailyId: undefined,
          endTime: undefined,
          taskId: undefined
          };

          // 注入附加的参数
          try {
            merge(params, additionParams);
          } catch (error) {
            console.log(error)
          }
          // 判断加载提示

          // 处理URL
          let url = '/solution-ppm/api/v2/built-in-system-ppm/daily/queryDepartmentDto';
          // 替换url中的变量

          // 排除空参数  日期组件重置后的空参数是[null] 或者[undefined]
          Object.keys(params).forEach(key=>{ if(params[key] === null){ delete params[key] }else if( Object.prototype.toString.call(params[key]) === '[object Object]' ){ Object.keys(params[key]).forEach(childKey=>{ if(params[key][childKey] === null || (Array.isArray(params[key][childKey]) && params[key][childKey].length === 1 && isNullOrUnDef(params[key][childKey]?.[0]))){ delete params[key][childKey] }}) } });
          return post(url, params).then(async (resp) => {
            dataConnector_conn_e3w2plo8ab_response.value = resp;

            return resp;
          }).catch(async (e) => {


            return Promise.reject(e);
          }).finally(async () => {


          })
        }

          return await exec()

    }


    // 页面数据 人效分析列表任务状态下拉框
    const dataConnector_conn_82lytt9lf3_response = ref();
    const dataConnector_conn_82lytt9lf3 = async (additionParams = {}) => {
        const exec = async () => {

          // 获取参数
          const params = {
            orderType: undefined,
          beginTimeOption: undefined,
          dateButtonType: undefined,
          dateOption: vid_qa9q0lk8g7_props?.value,
          pageSize: undefined,
          updateTime: undefined,
          sort: undefined,
          updateById: undefined,
          endTimeOption: undefined,
          createdBy: undefined,
          updateBy: undefined,
          pageNo: undefined,
          name: vid_ky6skiuo0o_props?.selected.singleLabel,
          createdTime: undefined,
          taskName: undefined,
          id: undefined,
          orderField: undefined,
          projectName: undefined,
          projectId: undefined,
          createdById: undefined,
          taskStatus: undefined
          };

          // 注入附加的参数
          try {
            merge(params, additionParams);
          } catch (error) {
            console.log(error)
          }
          // 判断加载提示

          // 处理URL
          let url = '/solution-ppm/api/v2/built-in-system-ppm/performanceManagement/humanAnalysisStatus/list';
          // 替换url中的变量

          // 排除空参数  日期组件重置后的空参数是[null] 或者[undefined]
          Object.keys(params).forEach(key=>{ if(params[key] === null){ delete params[key] }else if( Object.prototype.toString.call(params[key]) === '[object Object]' ){ Object.keys(params[key]).forEach(childKey=>{ if(params[key][childKey] === null || (Array.isArray(params[key][childKey]) && params[key][childKey].length === 1 && isNullOrUnDef(params[key][childKey]?.[0]))){ delete params[key][childKey] }}) } });
          return post(url, params).then(async (resp) => {
            dataConnector_conn_82lytt9lf3_response.value = resp;

            return resp;
          }).catch(async (e) => {


            return Promise.reject(e);
          }).finally(async () => {


          })
        }

          return await exec()

    }


    // 页面数据 人效分析列表项目下拉框
    const dataConnector_conn_a63q1ee1aj_response = ref();
    const dataConnector_conn_a63q1ee1aj = async (additionParams = {}) => {
        const exec = async () => {

          // 获取参数
          const params = {
            orderType: undefined,
          beginTimeOption: undefined,
          dateButtonType: undefined,
          dateOption: vid_qa9q0lk8g7_props?.value,
          pageSize: undefined,
          updateTime: undefined,
          sort: undefined,
          updateById: undefined,
          endTimeOption: undefined,
          createdBy: undefined,
          updateBy: undefined,
          pageNo: undefined,
          name: vid_ky6skiuo0o_props?.selected.singleLabel,
          createdTime: undefined,
          taskName: undefined,
          id: undefined,
          orderField: undefined,
          projectName: undefined,
          projectId: undefined,
          createdById: undefined,
          taskStatus: undefined
          };

          // 注入附加的参数
          try {
            merge(params, additionParams);
          } catch (error) {
            console.log(error)
          }
          // 判断加载提示

          // 处理URL
          let url = '/solution-ppm/api/v2/built-in-system-ppm/performanceManagement/humanAnalysisProject/list';
          // 替换url中的变量

          // 排除空参数  日期组件重置后的空参数是[null] 或者[undefined]
          Object.keys(params).forEach(key=>{ if(params[key] === null){ delete params[key] }else if( Object.prototype.toString.call(params[key]) === '[object Object]' ){ Object.keys(params[key]).forEach(childKey=>{ if(params[key][childKey] === null || (Array.isArray(params[key][childKey]) && params[key][childKey].length === 1 && isNullOrUnDef(params[key][childKey]?.[0]))){ delete params[key][childKey] }}) } });
          return post(url, params).then(async (resp) => {
            dataConnector_conn_a63q1ee1aj_response.value = resp;

            return resp;
          }).catch(async (e) => {


            return Promise.reject(e);
          }).finally(async () => {


          })
        }

          return await exec()

    }


    // 页面数据 人效分析列表
    const dataConnector_conn_j6u9kda1c2_response = ref();
    const dataConnector_conn_j6u9kda1c2 = async (additionParams = {}) => {
        const exec = async () => {

          // 获取参数
          const params = {
            orderType: undefined,
          beginTimeOption: undefined,
          dateButtonType: undefined,
          dateOption: vid_qa9q0lk8g7_props?.value,
          pageSize: vid_fgla2qxy4y_props?.rt_tableConfig.pagination.pageSize,
          updateTime: undefined,
          sort: undefined,
          updateById: undefined,
          endTimeOption: undefined,
          createdBy: undefined,
          updateBy: undefined,
          pageNo: vid_fgla2qxy4y_props?.rt_tableConfig.pagination.current,
          name: vid_ky6skiuo0o_props?.selected.singleLabel,
          createdTime: undefined,
          id: undefined,
          orderField: undefined,
          projectName: undefined,
          projectId: vid_76v0292ryl_props?.selected.value,
          createdById: undefined,
          taskStatus: vid_er0pfeabqd_props?.selected.value
          };

          // 注入附加的参数
          try {
            merge(params, additionParams);
          } catch (error) {
            console.log(error)
          }
          // 判断加载提示
          message.loading({content:"加载人效分析中",duration: 0, key:"loading_pg5eh71c9d"})
          // 处理URL
          let url = '/solution-ppm/api/v2/built-in-system-ppm/performanceManagement/humanAnalysis/list';
          // 替换url中的变量

          // 排除空参数  日期组件重置后的空参数是[null] 或者[undefined]
          Object.keys(params).forEach(key=>{ if(params[key] === null){ delete params[key] }else if( Object.prototype.toString.call(params[key]) === '[object Object]' ){ Object.keys(params[key]).forEach(childKey=>{ if(params[key][childKey] === null || (Array.isArray(params[key][childKey]) && params[key][childKey].length === 1 && isNullOrUnDef(params[key][childKey]?.[0]))){ delete params[key][childKey] }}) } });
          return post(url, params).then(async (resp) => {
            dataConnector_conn_j6u9kda1c2_response.value = resp;

            return resp;
          }).catch(async (e) => {
            message.loading({content:"加载人效分析中",duration: 0.1, key:"loading_pg5eh71c9d"})

            return Promise.reject(e);
          }).finally(async () => {
            message.loading({content:"加载人效分析中",duration: 0.1, key:"loading_pg5eh71c9d"})

          })
        }

          return await exec()

    }


    // 页面数据 工作计划列表
    const dataConnector_conn_7ruqln916y_response = ref();
    const dataConnector_conn_7ruqln916y = async (additionParams = {}) => {
        const exec = async () => {

          // 获取参数
          const params = {
            orderType: undefined,
          beginTimeOption: undefined,
          dateButtonType: undefined,
          dateOption: undefined,
          pageSize: undefined,
          updateTime: undefined,
          sort: undefined,
          updateById: undefined,
          endTimeOption: undefined,
          createdBy: undefined,
          updateBy: undefined,
          pageNo: undefined,
          name: vid_ky6skiuo0o_props?.selected.singleLabel,
          createdTime: undefined,
          taskName: undefined,
          id: undefined,
          orderField: undefined,
          projectName: undefined,
          projectId: undefined,
          createdById: undefined,
          taskStatus: undefined
          };

          // 注入附加的参数
          try {
            merge(params, additionParams);
          } catch (error) {
            console.log(error)
          }
          // 判断加载提示
          message.loading({content:"加载工作计划中",duration: 0, key:"loading_fhrardsdaq"})
          // 处理URL
          let url = '/solution-ppm/api/v2/built-in-system-ppm/performanceManagement/workSchedule/list';
          // 替换url中的变量

          // 排除空参数  日期组件重置后的空参数是[null] 或者[undefined]
          Object.keys(params).forEach(key=>{ if(params[key] === null){ delete params[key] }else if( Object.prototype.toString.call(params[key]) === '[object Object]' ){ Object.keys(params[key]).forEach(childKey=>{ if(params[key][childKey] === null || (Array.isArray(params[key][childKey]) && params[key][childKey].length === 1 && isNullOrUnDef(params[key][childKey]?.[0]))){ delete params[key][childKey] }}) } });
          return post(url, params).then(async (resp) => {
            dataConnector_conn_7ruqln916y_response.value = resp;

            return resp;
          }).catch(async (e) => {
            message.loading({content:"加载工作计划中",duration: 0.1, key:"loading_fhrardsdaq"})

            return Promise.reject(e);
          }).finally(async () => {
            message.loading({content:"加载工作计划中",duration: 0.1, key:"loading_fhrardsdaq"})

          })
        }

          return await exec()

    }


    // 页面数据 工作计划列表(任务详情)
    const dataConnector_conn_s96l0dey9t_response = ref();
    const dataConnector_conn_s96l0dey9t = async (additionParams = {}) => {
        const exec = async () => {

          // 获取参数
          const params = {
            orderType: undefined,
          beginTimeOption: undefined,
          dateButtonType: undefined,
          dateOption: undefined,
          pageSize: undefined,
          updateTime: undefined,
          sort: undefined,
          updateById: undefined,
          endTimeOption: undefined,
          createdBy: undefined,
          updateBy: undefined,
          pageNo: undefined,
          name: vid_ky6skiuo0o_props?.selected.singleLabel,
          createdTime: undefined,
          taskName: vid_3g64ct4ptn_props?.selectEvent.taskName,
          id: undefined,
          orderField: undefined,
          projectName: undefined,
          projectId: undefined,
          createdById: undefined,
          taskStatus: undefined
          };

          // 注入附加的参数
          try {
            merge(params, additionParams);
          } catch (error) {
            console.log(error)
          }
          // 判断加载提示

          // 处理URL
          let url = '/solution-ppm/api/v2/built-in-system-ppm/performanceManagement/workSchedule/list';
          // 替换url中的变量

          // 排除空参数  日期组件重置后的空参数是[null] 或者[undefined]
          Object.keys(params).forEach(key=>{ if(params[key] === null){ delete params[key] }else if( Object.prototype.toString.call(params[key]) === '[object Object]' ){ Object.keys(params[key]).forEach(childKey=>{ if(params[key][childKey] === null || (Array.isArray(params[key][childKey]) && params[key][childKey].length === 1 && isNullOrUnDef(params[key][childKey]?.[0]))){ delete params[key][childKey] }}) } });
          return post(url, params).then(async (resp) => {
            dataConnector_conn_s96l0dey9t_response.value = resp;

            return resp;
          }).catch(async (e) => {


            return Promise.reject(e);
          }).finally(async () => {


          })
        }

          return await exec()

    }


    // 页面数据 部门树
    const dataConnector_conn_1fixvblz7f_response = ref();
    const dataConnector_conn_1fixvblz7f = async (additionParams = {}) => {
        const exec = async () => {

          // 获取参数
          const params = {

          };

          // 注入附加的参数
          try {
            merge(params, additionParams);
          } catch (error) {
            console.log(error)
          }
          // 判断加载提示

          // 处理URL
          let url = '/solution-ppm/api/v2/built-in-system-ppm/work-management/tree';
          // 替换url中的变量

          // 排除空参数  日期组件重置后的空参数是[null] 或者[undefined]
          Object.keys(params).forEach(key=>{ if(params[key] === null){ delete params[key] }else if( Object.prototype.toString.call(params[key]) === '[object Object]' ){ Object.keys(params[key]).forEach(childKey=>{ if(params[key][childKey] === null || (Array.isArray(params[key][childKey]) && params[key][childKey].length === 1 && isNullOrUnDef(params[key][childKey]?.[0]))){ delete params[key][childKey] }}) } });
          return post(url, params).then(async (resp) => {
            dataConnector_conn_1fixvblz7f_response.value = resp;

            return resp;
          }).catch(async (e) => {


            return Promise.reject(e);
          }).finally(async () => {


          })
        }

          return await exec()

    }

  /* ========================== 页面数据 ========================== */


  /* -------------------------- 响应 -------------------------- */

  /* ========================== 响应 ========================== */


  /* -------------------------- 函数 -------------------------- */

    // 自定义函数 获取当年第一天
    const customFunction_bd21ji1w0o =  (...params) => {
      const firstDayOfYear = dayjs().startOf('year').format('YYYY-MM-DD');

  // 获取今天的日期
  const today = dayjs().format('YYYY-MM-DD');

  console.log('当年第一天:', firstDayOfYear);
  console.log('今天:', today);
  vid_qa9q0lk8g7_props.value = [firstDayOfYear,today]
    }


    // 自定义函数 获取当月第一天
    const customFunction_et9mehy8si =  (...params) => {
      // 获取当月的第一天
  const firstDayOfMonth = dayjs().startOf('month').format('YYYY-MM-DD');

  // 获取今天的日期
  const today = dayjs().format('YYYY-MM-DD');

  vid_qa9q0lk8g7_props.value = [firstDayOfMonth, today]
    }


    // 自定义函数 获取本周周一
    const customFunction_klrrx1bzmx =  (...params) => {
      const today = dayjs().format('YYYY-MM-DD');

  // 获取本周的周一
  const mondayOfThisWeek = dayjs().day(1).format('YYYY-MM-DD');
  vid_qa9q0lk8g7_props.value=[mondayOfThisWeek,today]
    }


    // 自定义函数 工时导出
    const customFunction_l99xmwhthp =  (...params) => {
      function downloadExcel(response, name) {
                  const blob = new Blob([response], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' });
                  const downloadElement = document.createElement('a');
                  const href = window.URL.createObjectURL(blob);// 创建下载的链接
                  downloadElement.href = href;
                  downloadElement.download = name; // 下载后文件名
                  document.body.appendChild(downloadElement);
                  downloadElement.click(); // 点击下载
                  document.body.removeChild(downloadElement); // 下载完成移除元素
                  window.URL.revokeObjectURL(href);
                  return href;
          }
         const exporParams = {
                    date: a_y5d2eig5t4.e_ohp5mnovfk,
                    days: a_y5d2eig5t4.q_17j7f9yd7e,
                    departmentList:a_y5d2eig5t4.u_pkg3q6xtgy,
              			emailFlag:a_y5d2eig5t4.z_wzdeaf5k4y
            }
          post(`/solution-ppm/api/v2/built-in-system-ppm/work-management/export`, exporParams, { responseType: 'arraybuffer', }).then(res => {
                  downloadExcel(res, '工时统计.xlsx')
          })
    }

  /* ========================== 函数 ========================== */


  /* -------------------------- 页面参数 -------------------------- */

    const pageParameter_state = reactive({
        'processInstanceId': props.processInstanceId ?? route.query.processInstanceId,
    })

  /* ========================== 页面参数 ========================== */


  /* -------------------------- 组件事件处理方法 -------------------------- */

    // ---------------------------- 组件数据同步 ----------------------------
    // 处理 下拉树_rhnlg9sj1m 的 systemList 属性关联
  watch(() => dataConnector_conn_1fixvblz7f_response?.value?.data,
    () => { vid_5nqxinjcl4_options_raw.value = dataConnector_conn_1fixvblz7f_response?.value?.data; },
    {deep: true})
  // 处理 表格_5iz440uo15 的 systemList 属性关联
  watch(() => dataConnector_conn_s96l0dey9t_response?.value?.dataList,
    () => { vid_4dv2jp2d8m_options_raw.value = dataConnector_conn_s96l0dey9t_response?.value?.dataList; },
    {deep: true})
  // 处理 表格_5iz440uo15 的 totalNumber 属性关联
  watch(() => dataConnector_conn_s96l0dey9t_response?.value?.totalElements,
    () => { vid_4dv2jp2d8m_props.totalNumber = dataConnector_conn_s96l0dey9t_response?.value?.totalElements; },
    {deep: true})
  // 处理 日历_urrxpa7u19 的 systemList 属性关联
  watch(() => dataConnector_conn_7ruqln916y_response?.value?.dataList,
    () => { vid_3g64ct4ptn_options_raw.value = dataConnector_conn_7ruqln916y_response?.value?.dataList; },
    {deep: true})
  // 处理 简单文本_jz76mlcs6k 的 rt_text 属性关联
  watch(() => dataConnector_conn_j6u9kda1c2_response?.value?.numberOfBugs,
    () => { vid_sz30s7hjid_props.rt_text = dataConnector_conn_j6u9kda1c2_response?.value?.numberOfBugs; },
    {deep: true})
  // 处理 简单文本_2jnpf8eubx 的 rt_text 属性关联
  watch(() => dataConnector_conn_j6u9kda1c2_response?.value?.numberOfTasksDelayed,
    () => { vid_ou7szm3hib_props.rt_text = dataConnector_conn_j6u9kda1c2_response?.value?.numberOfTasksDelayed; },
    {deep: true})
  // 处理 简单文本_9f0j6ct34h 的 rt_text 属性关联
  watch(() => dataConnector_conn_j6u9kda1c2_response?.value?.numberOfTasksCompleted,
    () => { vid_bss479grk1_props.rt_text = dataConnector_conn_j6u9kda1c2_response?.value?.numberOfTasksCompleted; },
    {deep: true})
  // 处理 简单文本_b7itgcp040 的 rt_text 属性关联
  watch(() => dataConnector_conn_j6u9kda1c2_response?.value?.workingHours,
    () => { vid_0w9ukc5mcv_props.rt_text = dataConnector_conn_j6u9kda1c2_response?.value?.workingHours; },
    {deep: true})
  // 处理 简单文本_oa1tx2ophs 的 rt_text 属性关联
  watch(() => dataConnector_conn_j6u9kda1c2_response?.value?.numberOfProjects,
    () => { vid_rrs54r857i_props.rt_text = dataConnector_conn_j6u9kda1c2_response?.value?.numberOfProjects; },
    {deep: true})
  // 处理 下拉框_选择任务状态 的 systemList 属性关联
  watch(() => dataConnector_conn_82lytt9lf3_response?.value?.dataList,
    () => { vid_er0pfeabqd_options_raw.value = dataConnector_conn_82lytt9lf3_response?.value?.dataList; },
    {deep: true})
  // 处理 下拉框_选择项目 的 systemList 属性关联
  watch(() => dataConnector_conn_a63q1ee1aj_response?.value?.dataList,
    () => { vid_76v0292ryl_options_raw.value = dataConnector_conn_a63q1ee1aj_response?.value?.dataList; },
    {deep: true})
  // 处理 表格_人效详情 的 systemList 属性关联
  watch(() => dataConnector_conn_j6u9kda1c2_response?.value?.dataList,
    () => { vid_fgla2qxy4y_options_raw.value = dataConnector_conn_j6u9kda1c2_response?.value?.dataList; },
    {deep: true})
  // 处理 表格_人效详情 的 totalNumber 属性关联
  watch(() => dataConnector_conn_j6u9kda1c2_response?.value?.totalElements,
    () => { vid_fgla2qxy4y_props.totalNumber = dataConnector_conn_j6u9kda1c2_response?.value?.totalElements; },
    {deep: true})
  // 处理 树形控件_829006vfva 的 systemList 属性关联
  watch(() => dataConnector_conn_e3w2plo8ab_response?.value?.treeNodes,
    () => { vid_ky6skiuo0o_options_raw.value = dataConnector_conn_e3w2plo8ab_response?.value?.treeNodes; },
    {deep: true})
    // ============================ 组件数据同步 ============================

  /**
  * 处理元素 对话框 的 cancel 事件
  */
  let handle_vid_qvxk999uqh_cancel = throttle(async (...params) => {
  vid_qvxk999uqh_props.visible = false;
  }, 500)
  /**
  * 处理元素 对话框 的 ok 事件
  */
  let handle_vid_qvxk999uqh_ok = throttle(async (...params) => {
  customFunction_l99xmwhthp();
  vid_qvxk999uqh_props.visible = false;
  // 这里组件可能还未初始化， 这里使用可选链的形式进行函数触发
  try {
  await vid_9ts69zdrpu_ref.value?.resetFields();
  } catch (error) { console.log(error);}
  }, 500)
  /**
  * 处理元素 下拉树 的 dropdownVisibleChange 事件
  */
  let handle_vid_5nqxinjcl4_dropdownVisibleChange = throttle(async (...params) => {
  await dataConnector_conn_1fixvblz7f()
  }, 500)
  /**
  * 处理元素 下拉树 的 change 事件
  */
  let handle_vid_5nqxinjcl4_change = throttle(async (...params) => {
  const [value, label] = params;
  console.log(value, label)
  vid_5nqxinjcl4_props.selected.label = label;
  vid_5nqxinjcl4_props.selected.value = value;
  vid_5nqxinjcl4_props.selected.option = label.map((item, index) => ({
  label: item,
  value: value[index] ? value[index] : value,
  }));
  }, 500)
  /**
  * 处理元素 单选按钮组 的 change 事件
  */
  let handle_vid_ly1dsvmc8d_change = throttle(async (...params) => {
  const [e] = params;
  vid_ly1dsvmc8d_props.selected.label = vid_ly1dsvmc8d_options.value().find(item => item.value == e.target.value).label;
  vid_ly1dsvmc8d_props.selected.value = e.target.value;
  vid_ly1dsvmc8d_props.selected.option = vid_ly1dsvmc8d_options.value().find(item => item.value == e.target.value);
  }, 500)
  /**
  * 处理元素 对话框 的 cancel 事件
  */
  let handle_vid_39eb6hf1tp_cancel = throttle(async (...params) => {
  vid_39eb6hf1tp_props.visible = false;
  }, 500)
  /**
  * 处理元素 对话框 的 ok 事件
  */
  let handle_vid_39eb6hf1tp_ok = throttle(async (...params) => {
  vid_39eb6hf1tp_props.visible = false;
  }, 500)
  /**
  * 处理元素 表格 的 change 事件
  */
  let handle_vid_4dv2jp2d8m_change = throttle(async (...params) => {
  // 处理分页器相关数据
  const [pagination, filters, sorter] = params;
  const { current, pageSize } = pagination;
  vid_4dv2jp2d8m_props.rt_tableConfig.pagination.current = current;
  vid_4dv2jp2d8m_props.rt_tableConfig.pagination.pageSize = pageSize;
  // 处理排序相关数据
  const { field, order } = sorter;
  const sorterList = [...vid_4dv2jp2d8m_props.rowMergeSort];
  let sorterValue = {};
  if (order === 'descend') {
  sorterValue = { order: field, direction: 'DESC' }
  } else if (order === 'ascend') {
  sorterValue = { order: field, direction: 'ASC' }
  }
  sorterList.push(sorterValue);
  vid_4dv2jp2d8m_props.systemSort = sorterList;
  vid_4dv2jp2d8m_props.sorter = sorterValue;
  }, 500)
  /**
  * 处理元素 日历 的 eventClick 事件
  */
  let handle_vid_3g64ct4ptn_eventClick = throttle(async (...params) => {
  await dataConnector_conn_s96l0dey9t()
  vid_39eb6hf1tp_props.visible = true;
  }, 500)
  /**
  * 处理元素 按钮 的 click 事件
  */
  let handle_vid_410ad96obp_click = throttle(async (...params) => {
  vid_qvxk999uqh_props.visible = true;
  }, 500)
  /**
  * 处理元素 日期区间 的 change 事件
  */
  let handle_vid_qa9q0lk8g7_change = throttle(async (...params) => {
  await dataConnector_conn_j6u9kda1c2()
  }, 500)
  /**
  * 处理元素 按钮 的 click 事件
  */
  let handle_vid_tnxzj055n7_click = throttle(async (...params) => {
  customFunction_bd21ji1w0o();
  await dataConnector_conn_j6u9kda1c2()
  }, 500)
  /**
  * 处理元素 按钮 的 click 事件
  */
  let handle_vid_ufsd2j5ajm_click = throttle(async (...params) => {
  customFunction_et9mehy8si();
  await dataConnector_conn_j6u9kda1c2()
  }, 500)
  /**
  * 处理元素 按钮 的 click 事件
  */
  let handle_vid_7woqb2kh3o_click = throttle(async (...params) => {
  customFunction_klrrx1bzmx();
  await dataConnector_conn_j6u9kda1c2()
  }, 500)
  /**
  * 处理元素 下拉框 的 focus 事件
  */
  let handle_vid_er0pfeabqd_focus = throttle(async (...params) => {
  await dataConnector_conn_82lytt9lf3()
  }, 500)
  /**
  * 处理元素 下拉框 的 change 事件
  */
  let handle_vid_er0pfeabqd_change = throttle(async (...params) => {
  const [,option] = params;
  vid_er0pfeabqd_props.selected.label = option?.label;
  vid_er0pfeabqd_props.selected.value = option?.value;
  vid_er0pfeabqd_props.selected.option = option;
  await dataConnector_conn_j6u9kda1c2()
  }, 500)
  /**
  * 处理元素 下拉框 的 search 事件
  */
  let handle_vid_er0pfeabqd_search = throttle(async (...params) => {
  const [searchValue] = params;
  vid_er0pfeabqd_props.searchValue = searchValue;
  }, 500)
  /**
  * 处理元素 下拉框 的 focus 事件
  */
  let handle_vid_76v0292ryl_focus = throttle(async (...params) => {
  await dataConnector_conn_a63q1ee1aj()
  }, 500)
  /**
  * 处理元素 下拉框 的 change 事件
  */
  let handle_vid_76v0292ryl_change = throttle(async (...params) => {
  const [,option] = params;
  vid_76v0292ryl_props.selected.label = option?.label;
  vid_76v0292ryl_props.selected.value = option?.value;
  vid_76v0292ryl_props.selected.option = option;
  await dataConnector_conn_j6u9kda1c2()
  }, 500)
  /**
  * 处理元素 下拉框 的 search 事件
  */
  let handle_vid_76v0292ryl_search = throttle(async (...params) => {
  const [searchValue] = params;
  vid_76v0292ryl_props.searchValue = searchValue;
  }, 500)
  /**
  * 处理元素 表格 的 change 事件
  */
  let handle_vid_fgla2qxy4y_change = throttle(async (...params) => {
  // 处理分页器相关数据
  const [pagination, filters, sorter] = params;
  const { current, pageSize } = pagination;
  vid_fgla2qxy4y_props.rt_tableConfig.pagination.current = current;
  vid_fgla2qxy4y_props.rt_tableConfig.pagination.pageSize = pageSize;
  // 处理排序相关数据
  const { field, order } = sorter;
  const sorterList = [...vid_fgla2qxy4y_props.rowMergeSort];
  let sorterValue = {};
  if (order === 'descend') {
  sorterValue = { order: field, direction: 'DESC' }
  } else if (order === 'ascend') {
  sorterValue = { order: field, direction: 'ASC' }
  }
  sorterList.push(sorterValue);
  vid_fgla2qxy4y_props.systemSort = sorterList;
  vid_fgla2qxy4y_props.sorter = sorterValue;
  await dataConnector_conn_j6u9kda1c2()
  }, 500)
  /**
  * 处理元素 输入框 的 change 事件
  */
  let handle_vid_msa3chul2q_change = throttle(async (...params) => {
  await dataConnector_conn_e3w2plo8ab()
  }, 500)
  /**
  * 处理元素 树形控件 的 select 事件
  */
  let handle_vid_ky6skiuo0o_select = throttle(async (...params) => {
  const [selectedKeys, e] = params;
  const { selectedNodes = [], node = {} } = e, [singleValue] = selectedKeys, [singleNode] = selectedNodes;
  const { parent = {} } = node;
  vid_ky6skiuo0o_props.selected.title = selectedNodes.map((item) => item.name) ?? [];
  vid_ky6skiuo0o_props.selected.value = selectedKeys;
  vid_ky6skiuo0o_props.selected.option = selectedNodes;
  vid_ky6skiuo0o_props.selected.singleValue = singleValue;
  vid_ky6skiuo0o_props.selected.singleLabel = singleNode?.title ?? '';
  // 存储树节点数据
  vid_ky6skiuo0o_props.clickNode.nodeParentKey = parent?.key ?? node?.key ?? '';
  vid_ky6skiuo0o_props.clickNode.nodeKey = node?.key ?? '';
  vid_ky6skiuo0o_props.clickNode.nodeTitle = node?.title ?? '';
  await dataConnector_conn_j6u9kda1c2()
  await dataConnector_conn_7ruqln916y()
  }, 500)
  /* ========================== 组件事件处理方法 ========================== */


  /* -------------------------- 生命周期 -------------------------- */
  onMounted(() => { ;dataConnector_conn_e3w2plo8ab()

    });

    onUnmounted(() => {
      // 销毁定时器
      setTimeOutList.forEach(({ repeat, timer }) => {
        repeat ?  clearInterval(timer): clearTimeout(timer);
      });
    });

  /* ========================== 生命周期 ========================== */


  /* -------------------------- 数据关联处理 -------------------------- */





  /* -------------------------- 表单数据同步 -------------------------- */
  /* ========================== 表单数据同步 ========================== */

  /* ========================== 数据关联处理 ========================== */


  /* -------------------------- 不同组件自定义的处理逻辑 -------------------------- */
  onMounted(() => {
    const rawColumnList = []
    traversalTreeStructure(vid_4dv2jp2d8m_props.columnList, (node) => {
      if (node.type === 'column') {
        rawColumnList.push(node)
      }
    });
    
    // 获取缓存的表格列宽度，处理列宽信息
    UserTableRecords.getTableRecords(localGet('al__UID')).then((res) => {
      const columnWidthMap = res['vid_4dv2jp2d8m'] ?? {};
      rawColumnList.map((column) => {
        if(columnWidthMap[column.dataIndex]) {
          column.width = columnWidthMap[column.dataIndex]
        }
      })
    });
    
    vid_4dv2jp2d8m_props.rawColumnList = rawColumnList;
  })
  // 生成表格列：相同分组的数据需要合并单元格
  const vid_4dv2jp2d8m_columns = computed(() => {
    // 需要合并单元格的列
    const groupKeys = [];

    // 将表头配置按照groupTitle字段进行分组，以实现多级表头
    const columnList = [...vid_4dv2jp2d8m_props.columnList];

    function formatColumns(columns) {
      columns.forEach(item => {
        const { dataIndex, contentAlign, children, customCellStyle } = item;
        // 如果当前列是分组列，则递归处理它的子列，当前列本身不作处理
        if (!dataIndex && children && children.length) {
          formatColumns(children);
          return;
        }

        const groupIndex = groupKeys.findIndex(item => item === dataIndex);
        // 如果当前字段属于分组字段，则给它添加合并单元格的配置，否则直接返回
        if (groupIndex === -1) {
          item.customCell = (record, index) => {
            return { style: { 'text-align': contentAlign, ...(customCellStyle || {}) } };
          };
        } else {
          item.customCell = (record, index) => {
            const rowGroupKeys = groupKeys.slice(0, groupIndex + 1);
            const rowSpanList = generateRowSpanList(vid_4dv2jp2d8m_options.value(), rowGroupKeys,vid_4dv2jp2d8m_props.editRecordMap);
            return { rowSpan: rowSpanList[index], style: { 'text-align': contentAlign, ...(customCellStyle || {}) } };
          };
        }
      })
    }

    // 格式化column：增加合并单元格的配置，以及自定义样式
    formatColumns(columnList);

    return columnList;
  });


    // 表格分页器信息：将总条数信息加到基础分页信息中
    const vid_4dv2jp2d8m_pagination = computed(() => {
      const { totalNumber, rt_tableConfig } = vid_4dv2jp2d8m_props;
      const {
        enable = true,
        current= 1,
        pageSize= 10,
        showSizeChanger= false,
        pageSizeOptions= '10,20,30,40',
        showTotal= false,
        showQuickJumper= false,
        simple= false,
        hideOnSinglePage= false,
      } = rt_tableConfig.pagination ?? {};
      const { size = 'default', layout='bottomRight' } = rt_tableConfig?.style?.paginationStyle || {}
      let info = {};
      if(enable) {
        info = {
          total: totalNumber || 0,
          pageSize,
          size,
          simple,
          current,
          showSizeChanger,
          pageSizeOptions: pageSizeOptions.split(','),
          showQuickJumper,
          hideOnSinglePage,
          position: [layout],
        }
        if(showTotal) {
          info.showTotal = (total, range) => `共${total}个项目，第${current}/${Math.ceil(total / pageSize)}页`
        }
        return info;
      }
      return false;
    })


        // 补充一个watch，用于监听删除最后一页最后一条数据的情况，然后重新加载数据
        watch(() => dataConnector_conn_s96l0dey9t_response?.value?.dataList, (newValue) => {
          const current = vid_4dv2jp2d8m_props.rt_tableConfig.pagination.current;
          if (!newValue?.length && current > 1) {
            vid_4dv2jp2d8m_props.rt_tableConfig.pagination.current = current - 1;
            dataConnector_conn_s96l0dey9t();
          }
        });
  onMounted(() => {
    const rawColumnList = []
    traversalTreeStructure(vid_fgla2qxy4y_props.columnList, (node) => {
      if (node.type === 'column') {
        rawColumnList.push(node)
      }
    });
    
    // 获取缓存的表格列宽度，处理列宽信息
    UserTableRecords.getTableRecords(localGet('al__UID')).then((res) => {
      const columnWidthMap = res['vid_fgla2qxy4y'] ?? {};
      rawColumnList.map((column) => {
        if(columnWidthMap[column.dataIndex]) {
          column.width = columnWidthMap[column.dataIndex]
        }
      })
    });
    
    vid_fgla2qxy4y_props.rawColumnList = rawColumnList;
  })
  // 生成表格列：相同分组的数据需要合并单元格
  const vid_fgla2qxy4y_columns = computed(() => {
    // 需要合并单元格的列
    const groupKeys = [];

    // 将表头配置按照groupTitle字段进行分组，以实现多级表头
    const columnList = [...vid_fgla2qxy4y_props.columnList];

    function formatColumns(columns) {
      columns.forEach(item => {
        const { dataIndex, contentAlign, children, customCellStyle } = item;
        // 如果当前列是分组列，则递归处理它的子列，当前列本身不作处理
        if (!dataIndex && children && children.length) {
          formatColumns(children);
          return;
        }

        const groupIndex = groupKeys.findIndex(item => item === dataIndex);
        // 如果当前字段属于分组字段，则给它添加合并单元格的配置，否则直接返回
        if (groupIndex === -1) {
          item.customCell = (record, index) => {
            return { style: { 'text-align': contentAlign, ...(customCellStyle || {}) } };
          };
        } else {
          item.customCell = (record, index) => {
            const rowGroupKeys = groupKeys.slice(0, groupIndex + 1);
            const rowSpanList = generateRowSpanList(vid_fgla2qxy4y_options.value(), rowGroupKeys,vid_fgla2qxy4y_props.editRecordMap);
            return { rowSpan: rowSpanList[index], style: { 'text-align': contentAlign, ...(customCellStyle || {}) } };
          };
        }
      })
    }

    // 格式化column：增加合并单元格的配置，以及自定义样式
    formatColumns(columnList);

    return columnList;
  });


    // 表格分页器信息：将总条数信息加到基础分页信息中
    const vid_fgla2qxy4y_pagination = computed(() => {
      const { totalNumber, rt_tableConfig } = vid_fgla2qxy4y_props;
      const {
        enable = true,
        current= 1,
        pageSize= 10,
        showSizeChanger= false,
        pageSizeOptions= '10,20,30,40',
        showTotal= false,
        showQuickJumper= false,
        simple= false,
        hideOnSinglePage= false,
      } = rt_tableConfig.pagination ?? {};
      const { size = 'default', layout='bottomRight' } = rt_tableConfig?.style?.paginationStyle || {}
      let info = {};
      if(enable) {
        info = {
          total: totalNumber || 0,
          pageSize,
          size,
          simple,
          current,
          showSizeChanger,
          pageSizeOptions: pageSizeOptions.split(','),
          showQuickJumper,
          hideOnSinglePage,
          position: [layout],
        }
        if(showTotal) {
          info.showTotal = (total, range) => `共${total}个项目，第${current}/${Math.ceil(total / pageSize)}页`
        }
        return info;
      }
      return false;
    })


        // 补充一个watch，用于监听删除最后一页最后一条数据的情况，然后重新加载数据
        watch(() => dataConnector_conn_j6u9kda1c2_response?.value?.dataList, (newValue) => {
          const current = vid_fgla2qxy4y_props.rt_tableConfig.pagination.current;
          if (!newValue?.length && current > 1) {
            vid_fgla2qxy4y_props.rt_tableConfig.pagination.current = current - 1;
            dataConnector_conn_j6u9kda1c2();
          }
        });
  /**
   * 生成分组字段合并单元格的配置：返回值为一个数字数组，数组里面每一项即为该字段当前行的rowSpan配置
   * @param {Array} 表格中的数据
   * @param {Array} 当前分组字段的列表，注：为了保证优先级低的字段合并后是优先级高的字段合并后的子集，需要把比该字段优先级高的分组字段按顺序放在该字段前面；例如：所有分组字段列表为['grade', 'age', 'score']，要生成age字段的合并单元格配置，则该参数需要传['grade', 'age']
   * @returns {Array} 该字段合并单元格的rowSpan配置，例：[1, 1, 2, 0, 1]
   */
  function generateRowSpanList(dataSource, groupKeys,editRecordMap) {
    if (!dataSource || !dataSource.length) {
      return [];
    }

    const rowSpanList = [];

    // 判断单元格是否需要合并的临时值：使用表格数据最后一行进行初始化（表格数据的遍历是倒序进行的）
    let tempValue = getGroupValue(dataSource[dataSource.length - 1], groupKeys);
    // 记录需要合并单元格的数量
    let tempValueCount = 0;

    // 倒序遍历数组，以保证使用最前面一条数据合并单元格
    for (let index = dataSource.length - 1; index >= 0; index--) {
      rowSpanList[index] = 0;
      const groupValue = getGroupValue(dataSource[index], groupKeys);
      // 如果当前行的分组数据跟上一行一致，则将标记数量加一；否则将标记数量的当前值赋给上一条数据，并重置临时值和标记数量
      if(editRecordMap && editRecordMap[index]){ //如果当前行是编辑行
        rowSpanList[index + 1] = tempValueCount;
        tempValue = "";
        tempValueCount=1;
      }
      else if (groupValue === tempValue) {
        tempValueCount++;
      } else {
        rowSpanList[index + 1] = tempValueCount;
        tempValue = groupValue;
        tempValueCount = 1;
      }

      // 遍历到最后一行，将当前的标记数量赋给当前行
      if (index === 0) {
        rowSpanList[index] = tempValueCount;
      }
    }

    return rowSpanList;
  }

  /**
   * 根据分组字段列表生成当前数据行的分组值
   * @param {Object} 当前数据行
   * @param {Array} 分组字段列表
   * @returns {String} 拼装的当前数据行的分组值，例：record为{ age: 7, grade: '一年级', name: '小赵' }，groupKeys为['grade', 'age']，则拼装后的返回值为'一年级__$__7'
   */
  function getGroupValue(record, groupKeys) {
    const groupValueList = [];
    groupKeys.forEach(groupKey => {
      groupValueList.push(`${record[groupKey]}`);
    });

    return groupValueList.join('__$__');
  }

  /**
   * 将列表数据转换成树状数据
   * @param {Array} 原始的列表数据
   * @param {String|Number} 列表数据的唯一key
   * @param {String|Number} 列表数据转成树时的父级id
  */
  function convertListToTree(list, key, parentKey) {
    const clonedList = cloneDeep(list || []);

    // 遍历列表数据，生成树节点的map：key为列表数据的唯一key，value为列表当前行的数据
    const treeNodeMap = {};
    clonedList.forEach(item => {
      treeNodeMap[item[key]] = item;
    });

    const treeDataList = [];
    clonedList.forEach(item => {
      // 如果当前行数据的父级id不在树节点的map中，则当前数据为根节点数据，将其加入最终树形数据的列表；否则将其放入其父节点数据的children中
      if (!treeNodeMap[item[parentKey]]) {
        treeDataList.push(item);
      } else {
        if (!treeNodeMap[item[parentKey]].children) {
          treeNodeMap[item[parentKey]].children = [];
        }
        treeNodeMap[item[parentKey]].children.push(item);
      }
    });

    return treeDataList;
  }

  /**
   * 表格列宽伸缩处理，使用indexedDB缓存伸缩后的列宽度
   */
  const handleResizeColumn = (w, col, vid) => {
    col.width = w;
    
    UserTableRecords.saveTableRecords(col, localGet('al__UID'), vid)
    
  }
  /* ========================== 不同组件自定义的处理逻辑 ========================== */


  // ================================定制化逻辑========================================
  // 获取当月的第一天
  const firstDayOfMonth = dayjs().startOf('month').format('YYYY-MM-DD');

  // 获取今天的日期
  const today = dayjs().format('YYYY-MM-DD');

  vid_qa9q0lk8g7_props.value = [firstDayOfMonth, today]
</script>
<style lang="less" scoped>
  .page_root {
  width: 100%;
  height: 100%;
  overflow: auto;
  }
  .page_root :deep(.@{ant-prefix}-spin-nested-loading),
  .page_root :deep(.@{ant-prefix}-spin-container)
   {
      height: 100%;
  }
  .page_root :deep(.@{ant-prefix}-spin-container .@{ant-prefix}-table-wrapper)
   {
      display: flex;
      flex-flow: column nowrap;
      justify-content: flex-start;
  }
  .page_root :deep(.@{ant-prefix}-table)
   {
    flex: auto;
    overflow: auto;
  }
  .table-moreBtn_down {
    overflow: hidden; white-space: nowrap; text-overflow: ellipsis; width: 100px;
  }

  .table-moreBtn_menu :deep(.table-moreBtn_menu-item):hover {
    background: #ebf1ff;
  }

  /*  表格树结构样式处理，展开按钮层级增加*/
  :deep(.@{ant-prefix}-table-row-expand-icon) {
    z-index: 1;
  }
  /*  表格树结构 由于每个表格项采用自定义组件，使用绝对定位布局，开启树结构导致显示异常，暂时使用层级定位位置 */
  :deep(.@{ant-prefix}-table-row-level-1 .@{ant-prefix}-table-cell-with-append .cell-wrapper-left) {
    left: 15px !important;
    width: calc(100% - 15px);
  }
  :deep(.@{ant-prefix}-table-row-level-2 .@{ant-prefix}-table-cell-with-append .cell-wrapper-left) {
    left: 30px !important;
    width: calc(100% - 30px);
  }
  :deep(.@{ant-prefix}-table-row-level-3 .@{ant-prefix}-table-cell-with-append .cell-wrapper-left) {
    left: 45px !important;
    width: calc(100% - 45px);
  }
  :deep(.@{ant-prefix}-table-row-level-4 .@{ant-prefix}-table-cell-with-append .cell-wrapper-left) {
    left: 60px !important;
    width: calc(100% - 60px);
  }

  /* 穿梭框改变默认样式，为根据组件样式控制左右栏宽度。 */
  :deep(.@{ant-prefix}-transfer-list)
   {
      height: 100%;
      width: 50%;
  }
  .vid_ysl4fo0g9p :deep(input) {
        cursor: undefined;
      }
  .vid_ysl4fo0g9p{
      width:100%
  }
  .vid_5nqxinjcl4{
      width:100%
  }
  .vid_9j88td624v :deep(input) {
        text-decoration: undefined;
        font-weight: undefined;
        text-align: undefined;
        font-style: undefined;
        cursor: undefined;
      }
  .vid_9j88td624v{
      width:100%
  }
  .vid_j2wozrjgzj{
      margin-bottom:0px
  }
  .vid_ly1dsvmc8d :deep(span) {
        text-decoration: undefined;
        font-size: undefined;
        line-height: undefined;
        color: undefined;
      }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table-thead) > tr {
      height: 40px;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table-thead) > tr > th {
    background: #3875FF;
    font-size: 14px;
    font-family: arial, helvetica, "microsoft yahei";;
    font-weight: 600;
    color: #FFFFFF;
    border-bottom:1px solid #D9D9D9;
    padding: 8px 16px;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr:not(:last-child) > th {
    border-bottom:1px solid #D9D9D9;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr > th {
    border-right:1px solid #D9D9D9;
  }
  /* 将表格自带的左边框取消，方便设置表头边框颜色和内容边框颜色 */
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container {
    border-left: none;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr > th[colstart='0']:first-child {
    border-left:1px solid #D9D9D9;
  }
  /* 开启粘性表头后，表格结构会发生变化 需另外处理 */
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-header table {
    border-top:1px solid #D9D9D9;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container > .@{ant-prefix}-table-content > table {
    border-top:1px solid #D9D9D9;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table-thead) > tr > th:not(:last-child):not(.@{ant-prefix}-table-selection-column):not(.@{ant-prefix}-table-row-expand-icon-cell):not([colspan])::before {
      background: #D9D9D9;
      width: 1px;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table-cell-scrollbar) {
      box-shadow: none;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table-tbody) tr {
    height: 40px;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table-tbody) tr > td {
    font-size: 14px;
    font-family: arial, helvetica, "microsoft yahei";;
    font-weight: 400;
    color: #262626;
    border-bottom:1px solid #D9D9D9;
    padding: 0 16px;
    word-break: break-all;
    .cell-wrapper {
      padding: 0 16px;
    }
  }

  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table-tbody) tr > td .cell-wrapper {
    padding: 0 16px;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table-empty .@{ant-prefix}-table-tbody tr > td) {
    padding: 0;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table-tbody) tr > td .@{ant-prefix}-btn {
    padding: 0 30px 0 0;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table-tbody) tr > td .@{ant-prefix}-btn:last-child {
    padding: 0;
  }
  .vid_4dv2jp2d8m :deep(.table-striped-odd) td {
    background-color: #FFFFFF;
  }
  .vid_4dv2jp2d8m :deep(.table-striped-even) td {
    background-color: #F8FAFC;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-tbody tr > td {
    border-right:1px solid #D9D9D9;
  }
  .vid_4dv2jp2d8m :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-tbody tr > td:first-child {
    border-left:1px solid #D9D9D9;
  }
  .vid_4dv2jp2d8m{
      width:100%;
      box-shadow:0px 0px 0px 0px ;
      border-color:#FF0000
  }
  .vid_4dv2jp2d8m:active{
      width:100%
  }
  .vid_4dv2jp2d8m:focus{
      width:100%
  }
  .vid_4dv2jp2d8m:hover{
      width:100%
  }
  .vid_dh740syu1p{
      width:100%;
      height:100%
  }
  .vid_mktwbpfzp7{
      height:100%;
      display:block;
      background-color:#FFFFFF;
      box-shadow:0px 0px 0px 0px
  }
  .vid_ds98tkycyx{
      width:100%;
      overflow-y:auto;
      padding-right:24px;
      padding-bottom:16px;
      padding-left:24px
  }
  .vid_ds98tkycyx:active{
      width:100%
  }
  .vid_ds98tkycyx:focus{
      width:100%
  }
  .vid_ds98tkycyx:hover{
      width:100%
  }
  .vid_3g64ct4ptn{
      height:772px
  }
  .vid_ko7ckwyfrl{
      display:flex;
      flex-direction:row;
      flex-wrap:undefined;
      margin-bottom:16px
  }
  .vid_qi9e0kx08t{
      display:flex;
      align-items:center;
      justify-content:flex-end;
      flex-wrap:undefined
  }
  .vid_410ad96obp{
      color:rgba(56, 117, 255, 1);
      border-style:solid;
      border-width:1px;
      border-color:#3875FF;
      border-radius:2px
  }
  .vid_qa9q0lk8g7 :deep(input) {
        cursor: undefined;
      }
  .vid_qa9q0lk8g7{
      width:310px
  }
  .vid_tnxzj055n7{
      margin-left:24px;
      color:rgba(56, 117, 255, 1);
      border-style:solid;
      border-width:1px;
      border-color:#3875FF
  }
  .vid_ufsd2j5ajm{
      margin-right:16px;
      margin-left:16px;
      color:rgba(56, 117, 255, 1);
      border-style:solid;
      border-width:1px;
      border-color:#3875FF
  }
  .vid_7woqb2kh3o{
      color:rgba(56, 117, 255, 1);
      border-style:solid;
      border-width:1px;
      border-color:#3875FF
  }
  .vid_q1dfhdw71s{
      width:100%;
      display:flex;
      justify-content:space-between;
      flex-wrap:undefined;
      margin-bottom:16px
  }
  .vid_6ur60yiouc{
      padding-left:16px
  }
  .vid_luz09dwi2q{
      width:100%;
      height:80px;
      display:flex;
      align-items:center;
      flex-wrap:undefined;
      padding-right:8px;
      padding-left:8px;
      background-color:#F0F2F5;
      box-shadow:0px 6px 20px 0px #E2E4E9;
      border-style:solid;
      border-width:2px;
      border-color:#FFFFFF
  }
  .vid_25fj7j6na8{
      margin-right:8px
  }
  .vid_4yi8vxorje{
      color:rgba(255, 0, 0, 1)
  }
  .vid_sz30s7hjid{
      font-weight:600;
      color:rgba(255, 0, 0, 1);
      font-size:18px
  }
  .vid_dxdruzm1ps{
      padding-left:16px
  }
  .vid_rffa6a0dr9{
      width:100%;
      height:80px;
      display:flex;
      align-items:center;
      flex-wrap:undefined;
      padding-right:8px;
      padding-left:8px;
      background-color:rgba(240, 242, 245, 1);
      box-shadow:0px 6px 20px 0px #E2E4E9;
      border-style:solid;
      border-width:2px;
      border-color:#FFFFFF
  }
  .vid_bp6snm5f99{
      margin-right:8px
  }
  .vid_mmnxbfoalk{
      color:rgba(255, 0, 0, 1)
  }
  .vid_ou7szm3hib{
      font-weight:600;
      color:rgba(255, 0, 0, 1);
      font-size:18px
  }
  .vid_jlvaszmibf{
      padding-left:16px
  }
  .vid_6myzbssu27{
      width:100%;
      height:80px;
      display:flex;
      align-items:center;
      flex-wrap:undefined;
      padding-right:8px;
      padding-left:8px;
      background-color:#F0F2F5;
      box-shadow:0px 6px 20px 0px #E2E4E9;
      border-style:solid;
      border-width:2px;
      border-color:#FFFFFF
  }
  .vid_0fggt85rit{
      margin-right:8px
  }
  .vid_bss479grk1{
      font-weight:600;
      color:rgba(56, 117, 255, 1);
      font-size:18px
  }
  .vid_2xnlmf974q{
      padding-left:16px
  }
  .vid_39jwjldn49{
      width:100%;
      height:80px;
      display:flex;
      align-items:center;
      flex-wrap:undefined;
      padding-right:8px;
      padding-left:8px;
      background-color:rgba(240, 242, 245, 1);
      box-shadow:0px 6px 20px 0px #E2E4E9;
      border-style:solid;
      border-width:2px;
      border-color:#FFFFFF
  }
  .vid_yyhxxim3lo{
      margin-right:8px
  }
  .vid_0w9ukc5mcv{
      font-weight:600;
      color:rgba(56, 117, 255, 1);
      font-size:18px;
      box-shadow:0px 0px 0px 0px
  }
  .vid_i24xbz7tyb{
      width:100%;
      height:80px;
      display:flex;
      align-items:center;
      flex-wrap:undefined;
      padding-right:8px;
      padding-left:8px;
      background-color:rgba(240, 242, 245, 1);
      box-shadow:0px 6px 20px 0px #E2E4E9;
      border-style:solid;
      border-width:2px;
      border-color:#FFFFFF;
      border-radius:2px
  }
  .vid_8rpbl9in8j{
      margin-right:8px
  }
  .vid_rrs54r857i{
      font-weight:600;
      color:rgba(56, 117, 255, 1);
      font-size:18px
  }
  .vid_a8m3zvbhr4{
      padding-top:8px
  }
  .vid_er0pfeabqd{
      width:100%
  }
  .vid_76v0292ryl{
      width:100%
  }
  .vid_ky802x16uw{
      padding-left:8px;
      font-weight:600;
      font-size:16px;
      border-left-style:solid;
      border-left-width:4px;
      border-left-color:#3875FF
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table-thead) > tr {
      height: 40px;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table-thead) > tr > th {
    background: #3875FF;
    font-size: 14px;
    font-family: arial, helvetica, "microsoft yahei";;
    font-weight: 600;
    color: #FFFFFF;
    border-bottom:1px solid #D9D9D9;
    padding: 8px 16px;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr:not(:last-child) > th {
    border-bottom:1px solid #D9D9D9;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr > th {
    border-right:1px solid #D9D9D9;
  }
  /* 将表格自带的左边框取消，方便设置表头边框颜色和内容边框颜色 */
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container {
    border-left: none;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr > th[colstart='0']:first-child {
    border-left:1px solid #D9D9D9;
  }
  /* 开启粘性表头后，表格结构会发生变化 需另外处理 */
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-header table {
    border-top:1px solid #D9D9D9;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container > .@{ant-prefix}-table-content > table {
    border-top:1px solid #D9D9D9;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table-thead) > tr > th:not(:last-child):not(.@{ant-prefix}-table-selection-column):not(.@{ant-prefix}-table-row-expand-icon-cell):not([colspan])::before {
      background: #D9D9D9;
      width: 1px;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table-cell-scrollbar) {
      box-shadow: none;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table-tbody) tr {
    height: 40px;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table-tbody) tr > td {
    font-size: 14px;
    font-family: arial, helvetica, "microsoft yahei";;
    font-weight: 400;
    color: #262626;
    border-bottom:1px solid #D9D9D9;
    padding: 0 16px;
    word-break: break-all;
    .cell-wrapper {
      padding: 0 16px;
    }
  }

  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table-tbody) tr > td .cell-wrapper {
    padding: 0 16px;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table-empty .@{ant-prefix}-table-tbody tr > td) {
    padding: 0;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table-tbody) tr > td .@{ant-prefix}-btn {
    padding: 0 30px 0 0;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table-tbody) tr > td .@{ant-prefix}-btn:last-child {
    padding: 0;
  }
  .vid_fgla2qxy4y :deep(.table-striped-odd) td {
    background-color: #FFFFFF;
  }
  .vid_fgla2qxy4y :deep(.table-striped-even) td {
    background-color: #F8FAFC;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-tbody tr > td {
    border-right:1px solid #D9D9D9;
  }
  .vid_fgla2qxy4y :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-tbody tr > td:first-child {
    border-left:1px solid #D9D9D9;
  }
  .vid_fgla2qxy4y{
      width:100%;
      margin-top:12px;
      box-shadow:0px 0px 0px 0px ;
      border-color:#FF0000
  }
  .vid_fgla2qxy4y:active{
      width:100%
  }
  .vid_fgla2qxy4y:focus{
      width:100%
  }
  .vid_fgla2qxy4y:hover{
      width:100%
  }
  .vid_be2g827ckw{
      height:100%;
      display:block;
      padding-top:16px;
      padding-right:24px;
      padding-bottom:16px;
      padding-left:24px;
      background-color:#FFFFFF;
      box-shadow:0px 0px 0px 0px
  }
  .vid_z1yxlq2dr5{
      font-weight:600;
      color:rgba(38, 38, 38, 1);
      font-size:16px;
      border-left-style:none;
      border-left-width:4px;
      border-left-color:#3875FF
  }
  .vid_msa3chul2q{
      margin-top:16px;
      margin-bottom:16px;
      border-style:solid;
      border-width:1px;
      border-color:#D9D9D9;
      border-radius:2px
  }
  .vid_yrpmsr6tyj{
      height:800px;
      overflow-y:auto
  }
  .vid_ky6skiuo0o :deep(span) {
        color: undefined;
      }
</style>